[excel/VBA] aide sur macro
antic80
Messages postés
4877
Statut
Contributeur
-
antic80 Messages postés 4877 Statut Contributeur -
antic80 Messages postés 4877 Statut Contributeur -
Bonjour,
j'ai un tableau qui se présente comme suit
Décembre 2006 0 0 0 0 1 0 0
Décembre 2007 0 0 1 0 1 0 0
Novembre 2006 0 0 0 0 0 0 0
Novembre 2007 0 0 0 0 3 0 2
Octobre 2006 0 0 0 0 0 0 0
Octobre 2007 0 0 0 0 0 0 0
c comme ca jusqu'a janvier
j'aimerai une boucle qui au niveau de chaque ligne vide permette de calculer la progression en pourcentage de chaque colonne.
le tableau commence a la cellule a1.
j'ai un tableau qui se présente comme suit
Décembre 2006 0 0 0 0 1 0 0
Décembre 2007 0 0 1 0 1 0 0
Novembre 2006 0 0 0 0 0 0 0
Novembre 2007 0 0 0 0 3 0 2
Octobre 2006 0 0 0 0 0 0 0
Octobre 2007 0 0 0 0 0 0 0
c comme ca jusqu'a janvier
j'aimerai une boucle qui au niveau de chaque ligne vide permette de calculer la progression en pourcentage de chaque colonne.
le tableau commence a la cellule a1.
A voir également:
- [excel/VBA] aide sur macro
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Comment trier par ordre alphabétique sur excel - Guide
- Comment calculer la moyenne sur excel - Guide
3 réponses
bonjour
qu'appelles-tu "ligne vide" ? Est-ce à la fin de ton tableau de données ? Tu veux faire la somme de chaque colonne et voir l'évolution d'une colonne à l'autre ?
qu'appelles-tu "ligne vide" ? Est-ce à la fin de ton tableau de données ? Tu veux faire la somme de chaque colonne et voir l'évolution d'une colonne à l'autre ?
Salut Antartic,
ci-dessous une petite procédure dont tu pourrais t'inspirer :
boucle sur les lignes ; si ligne vide détectée, alors boucle sur les colonnes pour y inscrire le calcul
En partant du principe que la colonne A contient les mois, la colonne 2 contient les années et les calculs se font à partir de la colonne 3 (d'où le 2 dans For i = 2 to DernColonne-1)
Sub Progression()
Dim DernLigne As Long, DernColonne As Long
Dim i As Integer
DernLigne = Range("A65536").End(xlUp).Row + 1
DernColonne = Range("A1").End(xlToRight).Column
Range("A1").Select
While ActiveCell.Row <= DernLigne
With ActiveCell
If Not .Value = Empty Then GoTo SUITE
.EntireRow.NumberFormat = "+0%;-0%;="
For i = 2 To DernColonne - 1
.Offset(0, i).Value = (.Offset(-1, i).Value / .Offset(-2, i).Value) - 1
Next i
End With
SUITE: ActiveCell.Offset(1, 0).Activate
Wend
End Sub
Au plaisir.
I.
ci-dessous une petite procédure dont tu pourrais t'inspirer :
boucle sur les lignes ; si ligne vide détectée, alors boucle sur les colonnes pour y inscrire le calcul
En partant du principe que la colonne A contient les mois, la colonne 2 contient les années et les calculs se font à partir de la colonne 3 (d'où le 2 dans For i = 2 to DernColonne-1)
Sub Progression()
Dim DernLigne As Long, DernColonne As Long
Dim i As Integer
DernLigne = Range("A65536").End(xlUp).Row + 1
DernColonne = Range("A1").End(xlToRight).Column
Range("A1").Select
While ActiveCell.Row <= DernLigne
With ActiveCell
If Not .Value = Empty Then GoTo SUITE
.EntireRow.NumberFormat = "+0%;-0%;="
For i = 2 To DernColonne - 1
.Offset(0, i).Value = (.Offset(-1, i).Value / .Offset(-2, i).Value) - 1
Next i
End With
SUITE: ActiveCell.Offset(1, 0).Activate
Wend
End Sub
Au plaisir.
I.
entre décembre et novembre donc il faut faire la progression entre décembre 2006 et décembre 2007
dans la cellule B3 tu colles la formule : =SI(B1>0;(B2-B1)*100/B1;0)
et tu obtiens le pourcentage d'évolution sauf si la valeur de Décembre 2006 est nulle.
Recopies la formule de B3 à H3 pour calculer les autres colonnes de Décembre
Ensuite recopie la ligne 3 pour la coller dans la ligne vide suivante (en principe la 6 si j'ai bien compris) pour le mois de Novembre.
A plus
Sub Copie_Formules()
Range("B3").Select
ActiveCell.FormulaR1C1 = "=IF(R[-2]C>0,(R[-1]C-R[-2]C)*100/R[-2]C,0)"
Range("B3").Select
Selection.Copy
Range("C3:H3").Select
ActiveSheet.Paste
Rows("3:3").Select
Selection.Copy
Lig = 6
Do
If Cells(Lig - 1, 1).Value = "" Then Exit Do
Rows(Lig & ":" & Lig).Select
ActiveSheet.Paste
Lig = Lig + 3 'car il y a une ligne vierge toutes les 3 lignes
Loop
Range("A3").Select
Application.CutCopyMode = False
End Sub