Lameche15
Messages postés156Date d'inscriptionmardi 9 septembre 2008StatutMembreDernière intervention15 septembre 2022
-
16 mai 2013 à 16:00
Lameche15
Messages postés156Date d'inscriptionmardi 9 septembre 2008StatutMembreDernière intervention15 septembre 2022
-
29 mai 2013 à 14:08
Bonjour à tous,
J'aurai besoin d'un sérieux coup de main.
J'ai une colonne (B) de mon tableau, qui contient 5 valeurs (texte) possible. Ma macro réalise un tri croissant sur cette colonne.
Jusque là ça fonctionne.
Sauf que je souhaiterais insérer une ligne à chaque changement de valeur et là ça coince j'ai essayé toute les boucles possible y à un truc que je pige pas.
Voici mon code tout pourrit qui ne prend pas en compte les dernières ligne
Agence = Range("B3").Value
i = 4
Do
agencecourante = Range("B" & i).Value
If agencecourante = Agence And agencecourante <> "" Then
j = i
Else: Rows("" & i).Select
Selection.Insert shift:=xlDown
j = i + 1
Agence = Range("B" & j).Value
End If
finOA = Range("B" & j).End(xlDown).Row
i = i + 1
Loop While i <> finOA
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 29 mai 2013 à 11:58
Bonjour,
ceci
>>> finOA = Sheets("Bilan OA").Range("A2").End(xlDown).Row
va fonctionner seulement s'il n'y a pas de cellules vides en colonne A
Utilise plutôt
>>> finOA = Sheets("Bilan OA").Cells(Rows.count, "A").End(xlUp).Row
Évite les Select.
Ce n'est pas nécessaire et ça ralentit le processus pour rien même si ce n'est pas beaucoup...
Range("A3:J" & finOA).Select
Selection.Sort Key1:=Range("B2"),....
se traduit par
Range("A3:J" & finOA).Sort Key1:=Range("B2"),....
Pour la boucle je préfère le For...Next, mais c'est une question de choix
For I = FinOA to 3 step -1 'ici tu peux mettre 3 plutôt que 2 puisque la 2e ligne sera différente de l'entête
If Range("B" & I) <> Range("B" & I - 1) Then
Rows(I).Insert
End if
Next
Quand tu postes du code, utilise le 3e icône en partant de la droite.
Sélectionne ton code et clique VB
Et indente ton code pour faciliter la lecture
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
J'ai le sentiment que j'ai un souci au niveau de ma boucle qui me fait perdre une ligne car aux tests, si je n'ai qu'une seule ligne par catégorie alors la ligne n'est pas insérée ou une fois sur deux
Vous n’avez pas trouvé la réponse que vous recherchez ?
Lameche15
Messages postés156Date d'inscriptionmardi 9 septembre 2008StatutMembreDernière intervention15 septembre 2022 29 mai 2013 à 14:08
Super merci beaucoup pour ce petit cours.
Tu dois avoir compris que j'apprends beaucoup avec l'enregistreur de macro et que forcément tout n'est pas à recopier.