[excel/VBA] aide sur macro
Fermé
antic80
Messages postés
4785
Date d'inscription
lundi 30 mai 2005
Statut
Contributeur
Dernière intervention
9 septembre 2009
-
17 mars 2008 à 14:56
antic80 Messages postés 4785 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009 - 19 mars 2008 à 19:45
antic80 Messages postés 4785 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009 - 19 mars 2008 à 19:45
A voir également:
- [excel/VBA] aide sur macro
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Comment calculer la moyenne sur excel - Guide
- Si et excel - Guide
- Trier sur excel - Guide
3 réponses
LePierre
Messages postés
249
Date d'inscription
samedi 8 mars 2008
Statut
Membre
Dernière intervention
2 août 2012
338
18 mars 2008 à 17:57
18 mars 2008 à 17:57
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 ?
Ivan-hoe
Messages postés
433
Date d'inscription
dimanche 17 février 2008
Statut
Membre
Dernière intervention
17 octobre 2008
309
19 mars 2008 à 17:33
19 mars 2008 à 17:33
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.
antic80
Messages postés
4785
Date d'inscription
lundi 30 mai 2005
Statut
Contributeur
Dernière intervention
9 septembre 2009
1 161
19 mars 2008 à 19:45
19 mars 2008 à 19:45
merci a Ivan-hoe et lepierre pour vos réponses je teste ca dès que possible et vous tiens au courant
18 mars 2008 à 21:21
entre décembre et novembre donc il faut faire la progression entre décembre 2006 et décembre 2007
19 mars 2008 à 10:08
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
19 mars 2008 à 16:48
19 mars 2008 à 17:41
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