Copier et ajouter une ligne en vba

Résolu
F76 -  
 f76 -

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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     

    bonjour,

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

    0
  2. F76
     

    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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       

      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
  3. F76
     

    C'est super génial, merci beaucoup.

    0
  4. f76
     

    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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      If Left(Cells(ligne, 1), 4) <> Left(Cells(ligne, 2), 4) Then
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. f76
     

    C'est parfait, merci beaucoup pour votre aide.

    0