Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

etape suivante d'une boucle suivant condition

  • Initiateur de la discussion Initiateur de la discussion Maillon
  • 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 !

M

Maillon

Guest
Bonjour à tous,

je parcours les cellules d'une plage ("A3:A250") et à chaque cellule de cette plage, je recherche une valeur dans la ligne correspondant à la cellule active.
Dans ma plage, chaque cellule contient des noms. Une séparation est faite entre chaque catégorie de nom par une cellule vide.
Je voudrais que ma boucle passe à la cellule suivante quand je rencontre une cellule vide sans faire la recherche de valeur sur la ligne de cette cellule.
Quand je rencontre deux cellules vides de suite, je dois arrêter ma boucle et me replacer sur la première cellule de ma plage sans faire la recherche de valeur sur les lignes des cellules vides.
Voici ce que j'ai fait pour l'instant:
Macro parcourant la page:
Sub Active_et_copie_nom()
Dim Visuel As Worksheet, Lettre As Worksheet, cellule As Range, cible As Variant
Dim pause As Variant, Start As Variant
Set Visuel = Worksheets("Visuel")
Set Lettre = Worksheets("Lettre Type")
With Visuel
Range("B500").Value = Range("A55").Value
Set plage = .Range("A55:A80")
For Each cellule In plage
If cellule = "" Then
cellule.Range = cellule.Offset(1, 0)
Else: If cellule.Value = "" And cellule.Offset(1, 0).Value = "" Then Exit For
End If
cible = cellule.Value
Range("B500").Value = cible
Lettre.Range("B7").Value = cible
Call MAJVISUEL
Start = Timer() 'tu initialises le depart
pause = 1 / 2 ' pour 50/10 de sec
Do While Timer() < Start + pause
Loop
Next
Range("B500").Value = Range("A55").Value

End With
End Sub
Macro recherchant une valeur dans la ligne de chaque cellule active:
Sub MAJVISUEL()
Dim Sh As Worksheet
Dim i As Byte
Set Sh = Worksheets("Visuel")
Sh.Activate
Range("C510:BT510").ClearContents
Ma_cellule_active = Application.WorksheetFunction.Match(Range("B500"), Range("A1:A70"), 0)
For i = 3 To 70
If Cells(Ma_cellule_active, i) = 1 Then
Cells(4, i).Copy
Cells(510, i).PasteSpecial
End If
Next i
End Sub

Merci de jeter un coup d'oeil à mon problème.
 
Re : etape suivante d'une boucle suivant condition

Bonjour,
Au bout de 7 posts, il te sera peut-être utile de relire [thread=32841] la charte [/thread]
Un fichier exempt de données confidentielles avec qq lignes et une note d'explication, vaut mieux qu'un bout de code sorti de son contexte.
A+
kjin
 
Re : etape suivante d'une boucle suivant condition

Bonjour Kjin,
J'ai relu la charte sur tes conseils et j'espère faire mieux maintenant.
Je joins un fichier pour, je l'espère, être plus clair. Je pense que l'explication du premier post plus le fichier joint doivent suffire mais n'hésite à me demander plus de précision.
 

Pièces jointes

Re : etape suivante d'une boucle suivant condition

Bonsoir pierrejean et merci pour ton aide,
j'ai fait ce que tu m'as dit mais ma macro s'arrêtait dés qu'elle rencontrait une cellule vide. J'ai travaillé sur ma macro depuis et j'ai trouvé la solution, voir fichier joint.
Maintenant, il ne me reste plus qu'à améliorer ma sub routine MAJVISUEL et vos idées sont les bienvenues.
Actuellement, MAJVISUEL récupère les clés appartenant à une personne et les colle sur une ligne plus bas de la feuille "Visuel".
Je souhaiterai arriver à coller chaque clé détenue par chaque personne dans la feuille "Lettre type" en A10 pour la première puis en A11 pour la deuxième et ainsi de suite jusqu'en A50 tant qu'une cellule de la plage(A10:A50) est encore vide . Si le nombre de clé détenue par une personne dépasse le nombre de cellule de ma plage (A10:A50) et que cette plage est pleine alors il faut coller les clés suivantes sur la plage (C10:C50) selon le même principe.
Le but étant d'imprimer toutes les lettres types mises à jour à chaque changement de nom.
Mes timers ne sont là que pour visualiser ce qui se passent sur mes feuilles.
Bon, je me remets au travail.
Merci encore pour votre aide.
A+
Maillon
 

Pièces jointes

Re : etape suivante d'une boucle suivant condition

Bonjour pierrejean,
c'est parfait. Je venais de trouver une solution de mon coté en utilisant une voie détournée (je renvoyais les clés sur une ligne(510) de visuel et je récupèrais ces clés par formules dans la feuille Lettre type) mais c'était plus compliqué et ce que tu as fait est bien mieux.
Deux questions:
je ne comprends pas pourquoi en début de macro tu as "continue = false", peux-tu me l'expliquer?

Et vu que tu es un habitué, peux-tu me dire s'il y a une manip spéciale à faire pour clore cette discussion?

En attendant, un grand merci pour ton aide pierrejean.

Maillon
 
Re : etape suivante d'une boucle suivant condition

Re
continue=False est un reliquat d'une methode que j'ai en fin de compte abandonnée
Tu peux l'effacer
Il n'y a pas a ma connaissance de manip specifique pour clore la discussion
 
- 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

Réponses
3
Affichages
258
Réponses
5
Affichages
916
Réponses
4
Affichages
737
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…