VBA | Si contient alors copie sinon passer au suivant
Résolu
Kirilov
Messages postés
108
Statut
Membre
-
Kirilov Messages postés 108 Statut Membre -
Kirilov Messages postés 108 Statut Membre -
Bonjour,
Je travaille sur un fichier Excel que j'ai besoin de ventiler sur plusieurs feuilles en fonction d'un critère.
J'aimerai passer par une macro qui permette de dire : Si la cell AD1=2 alors copie/colle la ligne 1 sur feuil2 et passer au suivant ET si la Cell AD1=3 alors copie/colle la ligne 1 sur feuil3 etc.
Tout ça pour 4 critères.
Mais je suis un vrai bras cassé en VBA et n'arrive pas à l'écrire.
Autre difficulté possible car je l'ai rencontré parfois lors de copier/coller : une partie des cellules contiennent du texte qui est parfois (souvent) supérieur à 255 caractères et lors de copies/colles ils se retrouvent tronqués.
Merci beaucoup de votre aide !
Cordialement,
Kirilov
Je travaille sur un fichier Excel que j'ai besoin de ventiler sur plusieurs feuilles en fonction d'un critère.
J'aimerai passer par une macro qui permette de dire : Si la cell AD1=2 alors copie/colle la ligne 1 sur feuil2 et passer au suivant ET si la Cell AD1=3 alors copie/colle la ligne 1 sur feuil3 etc.
Tout ça pour 4 critères.
Mais je suis un vrai bras cassé en VBA et n'arrive pas à l'écrire.
Autre difficulté possible car je l'ai rencontré parfois lors de copier/coller : une partie des cellules contiennent du texte qui est parfois (souvent) supérieur à 255 caractères et lors de copies/colles ils se retrouvent tronqués.
Merci beaucoup de votre aide !
Cordialement,
Kirilov
5 réponses
-
Bonjour,
Pour du code VBA, il faut connaitre précisément le contexte, aussi si tu pouvais nous mettre un exemple de structure des données, sans éléments personnels, avec les résultats souhaités expliqués clairement, ce serait plus facile de t'aider.
Pour communiquer ton classeur tu le télécharges sur https://www.cjoint.com/ (mode d'emploi) et tu mets ici le lien obtenu. -
Bonjour,
Vous trouverez la structure du fichier ici : http://www.cjoint.com/c/GJziCkcuipV
Merci de votre aide,
Kirilov -
Bonjour,
Avec cette macro tu devrais effectuer ta copie.Public Sub copier() Dim lig As Long With Sheets("Matrice") For lig = 2 To .Cells(Rows.Count, "AD").End(xlUp).Row If .Cells(lig, "AD") = 1 Or .Cells(lig, "AD") = 2 Then .Range("A" & lig & ":AN" & lig).Copy _ Destination:=Sheets("VAL_1").Cells(Sheets("VAL_1").Cells(Rows.Count, "A").End(xlUp).Row + 1, 1) End If Next lig End With End Sub
Si tu la lances plusieurs fois, la copie sera toujours effectuée à la suite. -
Bonjour Gbinforme,
Je viens de tester et cela ne fonctionne pas malheureusement.
La macro fait un copier/coller uniquement du dernier enregistrement qui contient en Cell AD la valeur 1, à l'exception de toutes les autres. Enfin c'est l'impression que cela me donne.
Kirilov-
re
c'est parce que ta colonne A est vide essaies ainsiPublic Sub copier() Dim lig As Long With Sheets("Matrice") For lig = 2 To .Cells(Rows.Count, "AD").End(xlUp).Row If .Cells(lig, "AD") = 1 Or .Cells(lig, "AD") = 2 Then .Range("A" & lig & ":AN" & lig).Copy _ Destination:=Sheets("VAL_1").Cells(Sheets("VAL_1").Cells(Rows.Count, "AD").End(xlUp).Row + 1, 1) End If Next lig End With End Sub
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
MERCI BEAUCOUP.
Ca fonctionne à merveille et ça va me faire gagner un temps fou !
Bien à vous,
Kirilov