VBA: Coller des données grâce à une boucle

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 !

yeti_yeti

XLDnaute Junior
Bonjour à tous,

Une petite question de ma part:
Ma macro copie des noms dans un tableau en fonction de si la personne à un
"ü" dans une des colonnes. Il se peut qu'une personne ait plusieurs "ü" ou
encore que plusieurs personnes aient le même "ü", ce dernier étant une
aptitude.

Ce que ma macro fait actuellement c'est qu'elle prend le nom d'une personne
qui a un "ü" le colle 5 fois. Donc s'il n'y a qu'une personne qui a un
"ü", son nom sera collé 5 fois alors que j'aimerais qu'il ne soit collé
qu'une fois. Aussi, si plusieurs personnes ont un "ü", c'est à chaque fois le
dernier qui est collé 5 fois au lieu d'avoir, par exemple, 5 noms différents.

Est-ce que quelqu'un pourrait me donner un petit coup de main svp?

Vous trouverez le fichier ci-joint. Je pense que mon programme est un peu du bricolage, certes, mais la partie qui nous intéresse est la suivante:
Code:
'On copie les joueurs ayant leur poste naturel
For j = 2 To 50     'joueurs
For p = 3 To 12     'positions
For cj = 15 To 19   'coller joueurs

If Cells(j, p) = "ü" And Cells(p, cj) = "" Then
Cells(j, 1).Copy
Cells(p, cj).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, 
SkipBlanks _
                  :=False, Transpose:=False
End If
Next cj
Next p
Next j

Merci d'avance
A+
YeTi
 

Pièces jointes

Re : VBA: Coller des données grâce à une boucle

Bonjour yety_yeti,

Je pense que pour résoudre ton problème, tu dois sortir de ta boucle dès la 1ère valeur trouvée. Tu peux donc essayer de modifier ton code comme suit :

Code:
'On copie les joueurs ayant leur poste naturel
For j = 2 To 50     'joueurs
  For p = 3 To 12     'positions
    For cj = 15 To 19   'coller joueurs

      If Cells(j, p) = "ü" And Cells(p, cj) = "" Then
        Cells(j, 1).Copy
        Cells(p, cj).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, 
        SkipBlanks :=False, Transpose:=False
        [COLOR="Red"]Exit For[/COLOR]
      End If
    Next cj
  Next p
Next j

Et pour simplfier la lecture de ton code, je te conseille d'appliquer l'incrémentation, surtout dans les boucles.

Espérant avoir répondu.

Cordialement.
 
- 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

Discussions similaires

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
174
Réponses
5
Affichages
477
Réponses
12
Affichages
989
Retour