|
|
CIGPME Base de connaissances
Domaine: Principal -> Excel et métier niveau 1
| Solution | | · Dresser un tableau excel en liste avec une synthèse annuelle Tout d'abord
il faut réaliser un tableau à partir de
la 3 ème colonne à savoir la colonne. Dans
l'exemple, nous faisons un état des
dépenses informatiques. Nous avons pris par convention de
mettre en gris les champs calculés

Donc D
pour les libellés de matériel, E pour
l'année qui ici est calculé, la formule EXCEL en
E2 est =SI(F2<>"";ANNEE(F2);"") On prend donc la
fonction année appliqué sur la date de la colonne
suivante. Le test sur F2 permet de mettre blanc au lieu d'une
erreur si le champ d'à côté
est vide. La colonne F est la date d'achat et la colonne G le prix de
la facture. Pour résumer on ne saisit que les
colonnes D, F, G.
On colorise les entêtes
en jaune pour mettre en évidence le début de
tableau. On crée un petit tableau à gauche avec
les différentes années, au besoin il
suffit de se mettre dans le bas à droite de la A13
sélectionnée pour avoir le +, maintenir le
curseur et duppliquer en incrément les
années. Ici on a 2005, avec l'incrémentation
durant la copie on aura 2007, on peut même
sélectionner A13 et B13 et aller dans le bas
à droite de B13 et duppliquer la cellule.
Enfin
passons à la formule de cumul de l'année. Pour
1999 en cellule B7, on va mettre la formule suivante =SOMME.SI($E$2:$E$345;A7;$G$2:$G$345) c'est
la somme sous condition, chaque paramètre est
séparé par un ; L'aide d'excel nous
permet d'avoir un descriptif.
Le premier
paramètre après la parenthèse soit
$E$2:$E$345 nous donne la sélection du tableau, on a
mis $ devant les références de cellule pour fixer
celles-ci en cas de copie., le A7 pour l'année, le
$G$2:$G$345 pour la colonne des sommes.
Bien
sûr certains connaissent, mais cela donne des
idées...
Syntaxe
de l'aide excel
SOMME.SI(plage;critère;somme_plage)
plage représente la
plage de cellules sur lesquelles baser la fonction.
critère représente le
critère, sous forme de nombre,
d'expression ou de texte, définissant les cellules
à additionner. Par exemple, l'argument critère
peut être exprimé sous une des formes
suivantes : « 32 »,
« >32 »,
« pommes ».
somme_plage représente les cellules à
additionner.
[ Retour au début ]
| | · Tableau avec mise en forme du nombre de lignes Voici
une feuille qui donne des tableaux d'amortissement et se remplice
suivant les données saisies en entete, pour le
calcul du nombre de ligne. On sait que les amortissements ont le nombre
de ligne dépendant du nombre d'années
d'amortissements, le tout ajusté pour le mode
linéaire donc avec ajustement par rapport
à la date de mise en service du bien. On en
déduit forcément le taux et la valeur
avec le montant du bien.
Pour une meilleur
présentation, on formate chaque cellule format cellule
onglet nombre puis on choisit comptabilité dans la
liste pour gommer les valeurs 0. Les valeurs saisies dans cette feuille
sont les champs en bleu. On peut donc ensuite faire menu
outils puis protéger la feuille comme ci dessous. Au
préalable il ne faut pas oublier de préciser dans
format cellule les cellules verrouillées et celles non

Voici le détail
pour calculer le tableau d'amortissement :

La
première cellule année aura comme formule
=SI($C9>0;ANNEE($C$4);0) pour afficher
l'année si on a une valeur. Ensuite on obtient comme dans la
figure ci dessus la formule décrite pour calculer
les années suivantes.
Pour la valeur
brute la cellule C9 aura D3 comme valeur, et les suivantes auront =SI(E9>0;E9;0).
L'amortissement
de la première année peut être
proratisé =C9*C5*MOIS(C4)/12 et les suivantes
redeviennent normales ou résiduelles
=SI($C10>$E$4;$E$4;$C10)
La valeur
résiduelle reste égale à elle
même et pareil sur toutes les cellules à savoir =SI(D10>0;C10-D10;0)
En
cadeau du fichier un tableau de trésorerie avec un
graphique, n'oubliez pas le document est normé la
saisie se fait sur les champs en bleu.
[ Retour au début ]
| | · Déclencher une mise à jour quelques soient les feuilles ajoutées Voici
un exemple de script VBA sous excel qui scanne toutes les feuilles
existantes y compris les nouvelles de congés et
qui raptrient le total sur une feuille de garde la première
en l'occurence
Ci dessous un modele de fiche
congés

Private
Sub Worksheet_Activate() Feuil1.Unprotect Dim var1 As
Single 'cp Dim var2 As Single 'ctd employé Dim
var3 As Single 'ctd employeur Dim var4 As Single 'absence Dim
var5 As Single 'cg sans solde Dim var6 As Integer 'mois Dim
var7 As Integer 'position Dim var8 As Single 'tot1 Dim
var9 As Single 'tot2
For t = 6 To 53 Cells(t,
11) = "" Cells(t, 14) = "" Cells(t, 15) = "" Next
t rem *********** lecture des feuilles type congés For
t = 1 To Sheets.Count If InStr(1, Sheets(t).Name, "conge")
<> 0 Or InStr(1, Sheets(t).Name, "congé")
<> 0 Then var1 = var1 + Sheets(t).Cells(42, 6) var2
= var2 + Sheets(t).Cells(48, 6) var3 = var3 +
Sheets(t).Cells(50, 6) var4 = var4 + Sheets(t).Cells(44, 6) var5
= var5 + Sheets(t).Cells(46, 6) var6 =
Month(Sheets(t).Cells(33, 3)) var7 = 2 + 4 * var6 var8
= Sheets(t).Cells(42, 6) + Sheets(t).Cells(48, 6) + Sheets(t).Cells(50,
6) + Sheets(t).Cells(46, 6) var9 = var8 + Sheets(t).Cells(44,
6)
Cells(var7, 11) = Cells(var7, 11) +
Sheets(t).Cells(42, 6) Cells(var7 + 1, 11) = Cells(var7 + 1,
11) + Sheets(t).Cells(48, 6) Cells(var7 + 2, 11) = Cells(var7
+ 2, 11) + Sheets(t).Cells(50, 6) Cells(var7, 14) =
Cells(var7, 14) + Sheets(t).Cells(44, 6) Cells(var7 + 1, 14) =
Cells(var7 + 1, 14) + Sheets(t).Cells(46, 6) 'cumul
intermédiaire Cells(var7 + 3, 14) = Cells(var7 + 3,
14) + var8 Cells(var7 + 3, 15) = Cells(var7 + 3, 15) + var9 End
If Next t rem *********** alimentation de la page de
garde Cells(5, 14) = var1 + var2 + var3 + var5 Cells(5,
15) = var1 + var2 + var3 + var4 + var5 Cells(2, 11) = var1 Cells(3,
11) = var2 Cells(4, 11) = var3 Cells(2, 14) = var4 Cells(3,
14) = var5 ThisWorkbook.Unprotect Feuil1.Protect End
Sub
Dans le principe on lit les feuilles (ci
dessus)qui ont toujours le même format et les champs à
même position, après reste à ajouter la
somme de chaque feuille dans des variables et faire une boucle
FOR... TO... et NEXT (variables var1 à var9), ensuite on
redéverse tout dans le premier feuillet du classeur
(voir le dernier pavet de code ci dessus)
On obtient
à chaque changement de feuille (puisque l'on utilise une
procédure évènementielle du
type Private Sub Worksheet_Activate()) un rafraichissement des champs
du premier onglet nommé situation_rh, les colonnes
mises à jour sont K,N et O

[ Retour au début ]
| | · J'ai une liste de clients à traiter à suivre, comment dois je les organiser ? C'est
simple,il faut penser base de données, tableau en liste avec
filtre automatisé, ne pas oublier de
découper au plus fin si on a des critères
d'analyse, notamment le découpage de l'adresse pour
la décomposition par code postal ou région.
Voici
le document final

Pour aller chercher les
filtres automatiques (triangle de sélection en liste
à côté de chaque champ), voici
où aller

attention
en choisissant le filtre la somme (TOTAUX) ne varie pas avec le filtre.
Sinon un clic sur la donnée filtre les
résultats voulus.
Il suffit cependant de
réselectionner les cellules dans le total pour que cela
marche. On voit alors apparaitre la fonction SOUS-TOTAL.

On peut
aussi procéder à des sous-totaux et masquer les
niveaux(en haut à gauche 1 2 3) avant les cellules, une nouvelle
zone est apparue on pourrait dire la marge. Il faut aller dans le menu
données puis sous-totaux, vous choisissez le
critère, ici le CA en somme (excel reprend vos
entêtes)

Il faudra effacer votre
total qui risque de prendre les sous-totaux à tort puisque l'outil
le génère.
Avec les
sous-totaux et les critères vos totaux peuvent varier.
[ Retour au début ]
| | · Tableau modèle à forme paramétrable (VBA) Pour
générer un tableau modèle, on peut
écrire un script VBA pour le fichier excel : Ce
code est à coller en allant dans le vb script ou en
maintenant ALT on appuie sur F11 (on relache tout), on clique
sur l'objet feuil1 et on colle tout dans la nouvelle fenêtre
au centre.
Public
tab1 As Integer, Position As Integer, Longueur As Integer
Private
Sub cmd1_Click() Rem tableau 1
--------------------------------------- If Feuil1.Cells(9,
2).Value <> "" Then tab1 = 0: tab2 = 0: tab3 = 0 If
Feuil1.Cells(9, 2).Value = "0" Then tab1 = 0 If
Feuil1.Cells(9, 2).Value = "1" Then tab1 = 1 If
Feuil1.Cells(9, 2).Value = "2" Then tab1 = 2 If
Feuil1.Cells(9, 2).Value = "3" Then tab1 = 3 If
Feuil1.Cells(9, 2).Value = "4" Then tab1 = 4 If
Feuil1.Cells(9, 2).Value = "5" Then tab1 = 5 If
Feuil1.Cells(9, 2).Value = "6" Then tab1 = 6 If
Feuil1.Cells(9, 2).Value = "7" Then tab1 = 7 If
Feuil1.Cells(9, 2).Value = "8" Then tab1 = 8 If
Feuil1.Cells(9, 2).Value = "9" Then tab1 = 9 If
Feuil1.Cells(9, 2).Value = "10" Then tab1 = 10
If
tab1 = 0 Then tab1 = 1 If tab1 > 0 Then Position = 12:
Longueur = 6: Call r1 End If
End Sub
Private
Sub r1() Call vidage1 Call cadrage1 For t =
2 To 1 + tab1 Feuil1.Cells(Position, t).Font.Bold = True Feuil1.Cells(Position,
t).HorizontalAlignment = xlCenter Feuil1.Cells(Position,
t).Value = "DEV" + Str(t - 1) Next t
End Sub
Private
Sub vidage1() For t = 2 To 30 Feuil1.Cells(Position,
t).Value = "" Feuil1.Cells(Position + 1, t).Value = "" Feuil1.Cells(Position
+ 2, t).Value = "" Feuil1.Cells(Position + 3, t).Value = "" Feuil1.Cells(Position
+ 4, t).Value = "" Feuil1.Cells(Position + 5, t).Value = "" Feuil1.Cells(Position
+ 6, t).Value = "" Feuil1.Cells(Position + 7, t).Value = "" Feuil1.Cells(Position
+ 8, t).Value = "" Feuil1.Cells(Position + 9, t).Value = ""
Feuil1.Cells(Position,
t).Borders.LineStyle = xlNone Feuil1.Cells(Position + 1,
t).Borders.LineStyle = xlNone Feuil1.Cells(Position + 2,
t).Borders.LineStyle = xlNone Feuil1.Cells(Position + 3,
t).Borders.LineStyle = xlNone Feuil1.Cells(Position + 4,
t).Borders.LineStyle = xlNone Feuil1.Cells(Position + 5,
t).Borders.LineStyle = xlNone Feuil1.Cells(Position + 6,
t).Borders.LineStyle = xlNone Feuil1.Cells(Position + 7,
t).Borders.LineStyle = xlNone Feuil1.Cells(Position + 8,
t).Borders.LineStyle = xlNone Feuil1.Cells(Position + 9,
t).Borders.LineStyle = xlNone
Next t
End
Sub Private Sub cadrage1() colonn = 0 If
Position = 72 Then colonn = 1
Feuil1.Range(Feuil1.Cells(Position,
2), Feuil1.Cells(Position + Longueur - colonn, tab1 + tab2 + tab3 +
1)).Borders(xlDiagonalDown).LineStyle = xlNone Feuil1.Range(Feuil1.Cells(Position,
2), Feuil1.Cells(Position + Longueur - colonn, tab1 + tab2 + tab3 +
1)).Borders(xlDiagonalUp).LineStyle = xlNone
Feuil1.Range(Feuil1.Cells(Position,
2), Feuil1.Cells(Position + Longueur - colonn, tab1 + tab2 + tab3 +
1)).Borders(xlEdgeLeft).LineStyle = xlContinuous Feuil1.Range(Feuil1.Cells(Position,
2), Feuil1.Cells(Position + Longueur - colonn, tab1 + tab2 + tab3 +
1)).Borders(xlEdgeTop).LineStyle = xlContinuous Feuil1.Range(Feuil1.Cells(Position,
2), Feuil1.Cells(Position + Longueur - colonn, tab1 + tab2 + tab3 +
1)).Borders(xlEdgeBottom).LineStyle = xlCo!ntinuous Feuil1.Range(Feuil1.Cells(Position,
2), Feuil1.Cells(Position + Longueur - colonn, tab1 + tab2 + tab3 +
1)).Borders(xlEdgeRight).LineStyle = xlContinuous Feuil1.Range(Feuil1.Cells(Position,
2), Feuil1.Cells(Position + Longueur - colonn, tab1 + tab2 + tab3 +
1)).Borders(xlInsideHorizontal).LineStyle = xlContinuous If
tab1 + tab2 + tab3 > 1 Then Feuil1.Range(Feuil1.Cells(Position,
2), Feuil1.Cells(Position + Longueur - colonn, tab1 + tab2 + tab3 +
1)).Borders(xlInsideVertical).LineStyle = xlContinuous Feuil1.Range(Feuil1.Cells(Position,
2), Feuil1.Cells(Position + Longueur - colonn, tab1 + tab2 + tab3 +
1)).ColumnWidth = 20 End Sub
On crée sur la feuille 1, pour
avoir le tableau suivant il faut respecter la position des cellules,

On
modifie ici le nombre de serveur en cliquant dans la cellule B9, on met
une valeur >1 puis clic sur le bouton mettre
à jour, excel modifie la structure du tableau.
[ Retour au début ]
|
|
|
|
|