Boucle for next avec condition
Résolu
Kwame1965
Messages postés
2
Statut
Membre
-
jordane45 Messages postés 30427 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 30427 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
question de béotien mais je souhaite définir quelle est la ligne vide pour pouvoir y coller des données. mais j'ai un problème ... car le programme s'arrête à la fin de la boucle (soit à 100)... alors que je voudrais qu'il s'arrête dès qu'il a trouvé une ligne vide et qu'il y a collé sa ligne de données.
Pourriez-vous m'aider?
Merci
question de béotien mais je souhaite définir quelle est la ligne vide pour pouvoir y coller des données. mais j'ai un problème ... car le programme s'arrête à la fin de la boucle (soit à 100)... alors que je voudrais qu'il s'arrête dès qu'il a trouvé une ligne vide et qu'il y a collé sa ligne de données.
Sub Macro6()
'
' Macro6 Macro
'
Sheets("r1").Select
Range("AC4:BY4").Select
Selection.Copy
' test pour déterminer la ligne vide
Sheets("Database").Select
For i = 4 To 100
lignevide = Range("a" & i)
ligneval = Range("a" & i).Value
If ligneval = "" Then
Range("a" & i).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Else
End If
Next i
End Sub
Pourriez-vous m'aider?
Merci
3 réponses
-
Bonjour,
Tu peux passer par Exit For
(Et pas besoin de Else si tu n'as pas d'instruction)
Sub Macro6() ' ' Macro6 Macro ' Sheets("r1").Select Range("AC4:BY4").Select Selection.Copy ' test pour déterminer la ligne vide Sheets("Database").Select For i = 4 To 100 lignevide = Range("a" & i) ligneval = Range("a" & i).Value If ligneval = "" Then Range("a" & i).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Exit For End If Next i End Sub -
bonjour,
il faut sortir de la boucle quand qu'il a trouvé une ligne vide et qu'il y a collé sa ligne de données.
Exit For
-
- Et que ce passera-t-il le jour où tu auras plus de 100 lignes dans ta feuille ?
Ta macro ne fonctionnera plus.. à moins que tu ailles modifier manuellement le nombre dans ta boucle....
Si ton but est d'ajouter (par copier/coller) des lignes dans ta seconde feuille.... il est préférable de rechercher la dernière ligne utilisée par le code que je t'ai soumis.
Même si la réponse données par lePivert et Crapoulou répond à ton besoin actuel... jettes tout de même un oeil à ma réponse. Ça pourrait te servir un jour...
:-)
-
-
Bonjour,
Tu peux déterminer quelle est la dernière ligne de ton tableau via l'instructionDerniere_Ligne = Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row
Ton code devient ainsi :
Sub Macro6() Dim Derniere_Ligne as Long Dim FSource as Worksheet Set FSource = Sheets("r1") Dim Fcible as Worksheet Set Fcible = Sheets("Database") 'Copie des données FSource.Range("AC4:BY4").Copy ' test pour déterminer la ligne vide Derniere_Ligne = Fcible.Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row ' Coller les données Fcible.Range("A" & Derniere_Ligne).PasteSpecial Paste:=xlPasteValues, _ Operation:=xlNone, SkipBlanks :=False, Transpose:=False End Sub
NB : Evites de faire des SELECT ..selection... .... ça alourdit le fonctionnement du code...Manipules plutôt les objets.
Cordialement,
Jordane