Boucle For
123Mart123
-
123Mart123 -
123Mart123 -
Bonjour,
J'essaie de faire une boucle for pour copier et coller une ligne variable d'un onglet dans la dernière ligne d'un autre onglet.
Les données de ligne1 et ligne2 sont entrées dans une userform par l'utilisateur et je désire que la la boucle for copie les lignes comprises entre ligne1 et ligne2 pour les cellules dans la plage A3:A59 qui contienne BP- & ligne2-ligne1
Par exemple, si ligne1 = 1 et ligne2 = 3 alors la boucle copie les lignes dont il y a BP-1, BP-2 et BP-3 d'inscrit dans la colonne A.
J'espere que ce n'est pas trop confus.
Merci beaucoup de votre aide !!
J'essaie de faire une boucle for pour copier et coller une ligne variable d'un onglet dans la dernière ligne d'un autre onglet.
Les données de ligne1 et ligne2 sont entrées dans une userform par l'utilisateur et je désire que la la boucle for copie les lignes comprises entre ligne1 et ligne2 pour les cellules dans la plage A3:A59 qui contienne BP- & ligne2-ligne1
Par exemple, si ligne1 = 1 et ligne2 = 3 alors la boucle copie les lignes dont il y a BP-1, BP-2 et BP-3 d'inscrit dans la colonne A.
Dim ligne1 As Long
Dim ligne2 As Long
Dim plage As Range
Set ShtL = ThisWorkbook.Sheets("Logbook")
DLigL = ShtL.Range("B65536").End(xlUp).Row
Set plage = ThisWorkbook.Sheets("Suivi").Range("A3:A59")
For i = ligne1 To ligne2
If plage.Value = "BP1-" & i Then
ThisWorkbook.Sheets("Suivi").Range("A1" & i + 2).Row = ShtL.Range("A" & DLigL + 1).Value
End If
Next i
J'espere que ce n'est pas trop confus.
Merci beaucoup de votre aide !!
A voir également:
- Boucle For
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Idm for mac - Télécharger - Téléchargement & Transfert
- Copytrans heic for windows - Télécharger - Visionnage & Diaporama
- Instagram for pc - Télécharger - Divers Communication
- Microsoft store download for pc - Guide
7 réponses
Bonjour,
Il y a quelques problèmes :
- tout d'abord la valeur de ligne1 et ligne2
leur valeur est dans ton userform ?
- tu ne peux pas tester ta plage mais seulement les cellules qui la composent
Il y a quelques problèmes :
- tout d'abord la valeur de ligne1 et ligne2
leur valeur est dans ton userform ?
- tu ne peux pas tester ta plage mais seulement les cellules qui la composent
Oui la valeur de ligne1 et ligne2 est récupérée au début de mon code
Pour tester les cellules, je ne sais pas comment m'y prendre...
ligne1 = Retval3.BF1FROM.Value
ligne2 = Retval3.BF1TO.Value
Pour tester les cellules, je ne sais pas comment m'y prendre...
Bonjour,
Je te propose ceci à tester :
Je te propose ceci à tester :
Dim ligne1 As Long Dim ligne2 As Long Dim DLigL As Long Dim cel As Range Dim ShtL As Worksheet ligne1 = Retval3.BF1FROM.Value ligne2 = Retval3.BF1TO.Value Set ShtL = ThisWorkbook.Sheets("Logbook") DLigL = ShtL.Range("B" & Rows.Count).End(xlUp).Row For Each cel In ThisWorkbook.Sheets("Suivi").Range("A3:A59").Cells If cel.Value = "BP1-" & ligne1 Or cel.Value = "BP1-" & ligne2 Then DLigL = DLigL + 1 Rows(cel.Row).Copy ShtL.Rows(DLigL) End If Next cel
Après plusieurs tests, je me suis rendu compte que ça fonctionne seulement pour les cellules contenant BP1-ligne1 et BP1-ligne2.
J'aimerais en fait que la macro copie toutes les lignes entre BP1-ligne1 et BP1-ligne2...
Par exemple si ligne1 = 13 et ligne2 = 16 alors la macro copierait les lignes où les cellules en A contiennent BP1-13, BP1-14, BP1-15 et BP1-16.
Merci de votre aide encore une fois !!!
J'aimerais en fait que la macro copie toutes les lignes entre BP1-ligne1 et BP1-ligne2...
Par exemple si ligne1 = 13 et ligne2 = 16 alors la macro copierait les lignes où les cellules en A contiennent BP1-13, BP1-14, BP1-15 et BP1-16.
Merci de votre aide encore une fois !!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
ça fonctionne seulement pour les cellules contenant BP1-ligne1 et BP1-ligne2
Tout à fait exact, je n'avais pas vu la subtilité.
Tu changes ainsi cette ligne :
ça fonctionne seulement pour les cellules contenant BP1-ligne1 et BP1-ligne2
Tout à fait exact, je n'avais pas vu la subtilité.
Tu changes ainsi cette ligne :
If cel.Value >= "BP1-" & ligne1 And cel.Value <= "BP1-" & ligne2 Then
Merci !
Désolé de réouvrir ce sujet, mais puisque mon code est déjà présent il sera plus facile de continuer.
Est-ce possible aussi d'effacer le contenu des lignes qui ont été copiées sauf pour la plage "A3:A59" dans
ThisWorkbook.Sheets("Suivi").Range("A3:A59").Cells
Par exemple, une fois que les lignes sont copiées dans l'onglet LogBook, la macro clearcontents les lignes copiées sauf la premiere cellule de chaque ligne.
Merci beaucoup !!!!!!
Désolé de réouvrir ce sujet, mais puisque mon code est déjà présent il sera plus facile de continuer.
Est-ce possible aussi d'effacer le contenu des lignes qui ont été copiées sauf pour la plage "A3:A59" dans
ThisWorkbook.Sheets("Suivi").Range("A3:A59").Cells
Par exemple, une fois que les lignes sont copiées dans l'onglet LogBook, la macro clearcontents les lignes copiées sauf la premiere cellule de chaque ligne.
Merci beaucoup !!!!!!
Bonjour,
En global BP1-2 est bien compris entre BP1-13 et BP1-20 :-)
Il faut comparer en découpage :
Cela devrait résoudre ton cas et les autres je pense.
En global BP1-2 est bien compris entre BP1-13 et BP1-20 :-)
Il faut comparer en découpage :
For Each cel In ThisWorkbook.Sheets("Suivi").Range("A3:A59").Cells If Left(cel.Value, 4) = "BP1-" And (Mid(cel.Value, 5) >= ligne1 And Mid(cel.Value, 5) <= ligne2) Then DLigL = DLigL + 1 Rows(cel.Row).Copy ShtL.Rows(DLigL) Cells(cel.Row, 2).Resize(1, Cells(cel.Row, Columns.Count).End(xlToLeft).Column).ClearContents End If Next cel
Cela devrait résoudre ton cas et les autres je pense.
Bonjour,
Merci de votre aide ! Mon projet avance très bien!
J'ai encore un petit problème,
J'aimerais dans un autre fonction que si par exemple ligne1 = 13 et ligne2 = 20, la macro copie les lignes BP1-13 à BP1-20 et colle sur BP1-13 +1 (donc BP1-14 à 21), efface le contenu de la première ligne (BP1-13) sauf la première colonne...
J'ai modifié ce code puisqu'il ne fonctionnait pas :
remplacé par
Où Q301:Q598 contient les mêmes valeurs que A3:A300...
Merci encore une fois pour votre précieux temps !!
Merci de votre aide ! Mon projet avance très bien!
J'ai encore un petit problème,
J'aimerais dans un autre fonction que si par exemple ligne1 = 13 et ligne2 = 20, la macro copie les lignes BP1-13 à BP1-20 et colle sur BP1-13 +1 (donc BP1-14 à 21), efface le contenu de la première ligne (BP1-13) sauf la première colonne...
J'ai modifié ce code puisqu'il ne fonctionnait pas :
Cells(cel.Row, 2).Resize(1, Cells(cel.Row, Columns.Count).End(xlToLeft).Column).ClearContents
remplacé par
ShtS.Rows(cel.Row).ClearContents
ShtS.Range("Q301:Q598").Copy ShtS.Range("A3:A300")
Où Q301:Q598 contient les mêmes valeurs que A3:A300...
Merci encore une fois pour votre précieux temps !!
Bonjour,
Merci de votre temps, est-ce que vous auriez un petit moment pour voir ce problème svp ? Je n'arrive pas à la solution...
Merci à l'avance.
Merci de votre temps, est-ce que vous auriez un petit moment pour voir ce problème svp ? Je n'arrive pas à la solution...
Merci à l'avance.
Je faisais une copie pour palier au fait que je n'arrivais pas à effacer seulement les valeurs de la colonne B à dernière colonne. J'ai donc fait un code qui effaçait toutes les valeurs et j'ai fait une copie de ces données de Q301:Q598 pour les remettre en A3:A300... Je n'ai pas réussi a faire fonctionner le code que vous m'aviez donner...