revenir d'une boucle i en arriere si "a"

  • Initiateur de la discussion Initiateur de la discussion carlos
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

C

carlos

Guest
Bonsoir à tous

voila g cette macro qui me transforme une suite de 1 à 28 chiffres inscrit dans une colonne Plage en 7 paquets de 4 numerotés 1,1,1,1 puis2,2,2,2 etc.... jusqu'a 7

For i = 1 To 8
For Each cellMD In Range('g4:g44')
If cellMD <> Empty And cellMD <> 'A' And cellMD <= 4* i And cellMD >= 4 * (i - 1) _
Then cellMD.Offset(0, 0).Value = 1 * i

Next
Next i

Quand il y a un 'A' dans une cellule de cette plage , il passe à la cellMD suivante.
mon souci c'est que si il y a un 'A' dans la cellule alors je n'ai que 3 chiffres de 2 par exemple au lieu d'en avoir 4 car une boucle i est passée.

Comment faire pour que si il y a un 'A' alors cette boucle i ne perde pas son tour .

g essayé i = i - 1 mais ca va pas ...

Merci
 
Bonsoir Carlos,

J'aurais souhaité pouvoir t'aider mais en recopiant ta macro elle ne fait pas ce que tu annonces.
Ce serait sympa que tu nous donnes une copie de ta macro qui fonctionne tel que tu l'as décrit si tu souhaites une aide adhoc !

Cordialement
 
Bonsoir Carlos,

Je t'ai trouvé une solution ! Mais comme il y avait une petite erreur dans ta macro initiale j'ai galéré un peu !!

En effet dans ton test '>=' il ne faut pas qu'il y est '=' !

Ceci étant corrigé, voici la solution que je te propose (si j'ai bien compris ton pb !) :

Sub montDesc()
Dim i As Byte, cellMD As Variant
Dim k, j As Integer
For i = 1 To 8
k = 0
For Each cellMD In Range('g4:g44')
If cellMD = 'A' Then k = k + 1
j = cellMD.Row - k - 3
If cellMD <> Empty And cellMD <> 'A' And (cellMD.Row - k - 3) <= 4 * i And (cellMD.Row - k - 3) > 4 * (i - 1) _
Then cellMD.Offset(0, 0).Value = 1 * i
Next
Next i
End Sub



J'ai rajouter la variable k qui sert à compter le nombre de 'A' et j'utilise la propriété 'row' d'une cellule de la plage (puisque tu ne travailles que sur une seule colonne.
Ainsi quelque soit le nombre de 'A' et leur position, les 'paquets' auront toujours 4 valeurs (sauf en fin de liste bien sur si tu n'as un nombre de valeurs sans 'A' multiple de 4).
Je t'ai mis en rouge mes modifications.

Voilà ! Bon courage, bonne continuation.

Alain
 
Bonsoir Alain

c'est vraiment tres sympa de m'aider et c'est pas la premiere fois.
Grace à toi mon projet evolue de jour en jour et mes connaissances aussi.Et en plus il y a les couleurs pour me faciter la comprehension .

AU TOP

@ bientot sur le net et bon dimanche
 
Bonjour Carlos et le Forum,

Ce fut un plaisir !

Je viens de voir que j'avais fait quelques fautes d'orthographe : mille excuses, parfois entre l'heure, la vue qui baisse, la frappe au clavier (je ne suis pas de formation secrétariat !!), il y en a un qui me frappe sauvagement et me fait commettre la faute !!

Au plaisir

Alain
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
899
Réponses
7
Affichages
984
Réponses
5
Affichages
744
Retour