Copier et ajouter une ligne en vba

Résolu

Bonjour,

 en VBA je voudrais dupliquer la ligne selon 2 critères se trouvant dans 2 cellules différentes sur la même ligne.

Si 2023 ou 2024 dans les 2 cellules alors passer à la ligne suivantes et tester à nouveau si 2023 et 2024 alors insérer et copier la ligne.

Puis modifier dans cette nouvelle ligne ou la précédente peu importe la cellule 2023 en 2024.

Merci pour vos réponses

5 réponses

  1. Contributeur

    bonjour,

    il serait préférable que tu fournisses un fichier exemple avec une feuille "avant" et une feuille "après".

    0
    1. Bonjour,

      Désolé mais je ne sais pas comment faire pour insérer un fichier.

      J'ai ces données dans les colonnes A,B,C:          Je voudrais obtenir:

      A            B       C                                                    A           B          C

      2023    2024    A                                                2023     2023         A

      2023    2023    B                                                2024    2024         A

      2024    2024    C                                               2023      2023        B

                                                                                2024      2024        C

      Lorsque j'ai une ligne avec 2 années différentes je la duplique et je change les années sur chaque lignes comme pour le client A par exemple.



       

      0
      1. Contributeur

        C'est plus clair ainsi.  Suggestion:

        Dim fl As Worksheet, ligne As Long
        Set fl = ActiveSheet
        ligne = 2
        Do While fl.Cells(ligne, 1) <> ""
            If fl.Cells(ligne, 1) <> fl.Cells(ligne, 2) Then
                fl.Cells(ligne, 1).EntireRow.Insert
                fl.Cells(ligne, 3) = fl.Cells(ligne + 1, 3)
                fl.Cells(ligne, 1) = fl.Cells(ligne + 1, 2)
                fl.Cells(ligne, 2) = fl.Cells(ligne + 1, 2)
                fl.Cells(ligne + 1, 2) = fl.Cells(ligne + 1, 1)
                ligne = ligne + 1
            End If
            ligne = ligne + 1
        Loop
        
        0
    2. C'est super génial, merci beaucoup.

      0
      1. Bonjour,

        J'ai voulu faire un essai en mettant 20231201 dans la colonne A et 20241205 dans la colonne B et faire la comparaison sur les 4 premier chiffres.

        J'ai modifier la macro initiale comme ci-dessous mais la ligne de comparaison ne fonctionne pas, le reste est ok:

        Sub test()
        Dim fl As Worksheet
        Set fl = ActiveSheet
        ligne = 1
        Do While fl.Cells(ligne, 1) <> ""
             If Cells(Left(ligne, 1), 4) <> Cells(Left(ligne, 2), 4) Then
                fl.Cells(ligne, 1).EntireRow.Insert
                fl.Rows(ligne + 1).Copy fl.Rows(ligne)
                fl.Cells(ligne, 1) = 20241001
                fl.Cells(ligne + 1, 2) = 20231231
                ligne = ligne + 1
            End If
            ligne = ligne + 1
        Loop
        End Sub

        Pouvez-vous me dire ce qui ne va pas svp?

        0
        1. Contributeur
          If Left(Cells(ligne, 1), 4) <> Left(Cells(ligne, 2), 4) Then
          0
      2. C'est parfait, merci beaucoup pour votre aide.

        0