Boucle VBA

Bonjour,

Je bloque depuis plusieurs heures et je n'ai pas trouvé de solution fonctionnant dans les sujets précédents.

Je souhaite copier la ligne si la colonne V contient la valeur "TABLE ANNULEE", pour ceci je pensais utiliser une variable mais il doit y avoir une erreur dans mon code car la macro ne détecte jamais ma valeur recherchée.

Vous trouverez en pièce jointe un fichier résumant mon problème.

Sub démo()

    Dim b As String
    b = ActiveCell.Offset(0, 21)

        Cells(7, 1).Select
        Do
        If b = "TABLE ANNULEE" Then
        Range(ActiveCell, ActiveCell.Offset(0, 25)).Select
        Selection.Copy
        End If

        ActiveCell.Offset(1, 0).Select
        a = ActiveCell.Offset(-1, 0)
Loop Until a = ""

End Sub

Merci par avance du temps consacré à l'étude de ma demande.

6test.xlsm (24.32 Ko)

Salut,

Afin que la valeur de b évolue, tu dois déplacer la ligne b = ActiveCell.Offset(0, 21) à l'intérieur de la boucle

Sub démo()

    Dim b As String

        Cells(7, 1).Select
        Do
        b = ActiveCell.Offset(0, 21)
        If b = "TABLE ANNULEE" Then
        Range(ActiveCell, ActiveCell.Offset(0, 25)).Select
        Selection.Copy
        End If

        ActiveCell.Offset(1, 0).Select
        a = ActiveCell.Offset(-1, 0)
Loop Until a = ""

End Sub

Bon, tu compliques un peu ton code inutilement avec cette variable

Amicalement.

Je te remercie pour ton rapide retour

Je me doute qu'il y aurait moyen de faire plus simple... Comment tu simplifierais ceci?

Re,

Ta macro ne fait rien, il est donc difficile de te montrer comment l'améliorer.

Mais par rapport à ton code qui ne fait rien, voici une manière plus élégante de ne toujours rien faire (plusieurs lignes de code et des variables inutiles supprimées) :

Sub démo()

Cells(7, 1).Select

Do

    If ActiveCell.Offset(0, 21) = "TABLE ANNULEE" Then
        Range(ActiveCell, ActiveCell.Offset(0, 25)).Copy
    End If

    ActiveCell.Offset(1, 0).Select

Loop Until ActiveCell.Offset(1, 0) = ""

End Sub

Je prétends que ta macro ne fait rien, car tu boucles sur certaines lignes et tu copies une plage à certaines conditions, mais tu ne colles nulle part les données copiées. Puis à la fin de ton tableau, ta macro s'arrête

Avec ton code, la macro boucle encore deux fois dans le vide (deux lignes vides au-dessous du tableau). J'ai corrigé cela dans le code ci-joint.

Chaleureusement.

Effectivement cela était simplement un extrait donc il n'y avait pas de destination.

Merci pour tes conseils.

Bonne soirée

Rechercher des sujets similaires à "boucle vba"