Excel

Résolu
Bonjour,

je suis débutant en en VBA, je vousdrais résoudre le problème suivant :

j'ai un tableau de 6 colonnes et x lignes ; mes données commence ligne 3
je dois selectionner les lignes qui contiennent une Valeur V1 en colonne 4 et si la valeur de la colonne 5 est < 6 si c'est vraie je copie la ligne et insert autant de fois que la valeur de cellule colonne 5 de la linge divisé par 6 (exemple si 12 alors copier inserer 1 ligne - si 18 copier inserer 2 lignes) puis remplacer la valeur de cellule de la colonne 5 copier et inserrer par 6 puis on boucle jusqu'a ce qu'il ny ai plus de ligne correspondante dans le tableau

merci de votre aide

3 réponses

  1. Bonjour,

    Ta condition est mal formulée. Je vais prendre l'hypothèse que la macro doit fonctionner si la colonne 4 est égale à V1 ou à V2 et que que la valeur de la colonne 5 est supérieure ou égale à 12

    
    Sub x()
    Dim i, a, b As Variant
    i = 3
    Do While Cells(i, 4) <> "" ' une boucle qui tournera tant que la cellule de la ligne i et colonne 4 est non vide
        If Cells(i, 4) = "V1" or cells(i,4) = "V2" then
            if Cells(i, 5) >= 12  Then  'si la cellule de la ligne i et colonne 4 = V1 et valeur de la colonne 5>= 12
                    
           a = Int(Cells(i, 5) / 6) 'calcul du nombre de copie
            
    End If
    end if
        i = i + 1
        Loop
    End Sub
    
    
    0
    1. ça marcher super

      mais si j'ai 2 valeur à rechercher V1 et V2 qui doivent toutes les 2 être >= à 12 comment je modifie la syntaxe

      merci d'avance
      0
      1. Bonjour,

        essaie ca :
        Sub x()
        
        Dim i, a, b As Variant
        
        i = 3
        Do While Cells(i, 4) <> "" ' une boucle qui tournera tant que la cellule de la ligne i et colonne 4 est non vide
        
            If Cells(i, 4) = "V1" And Cells(i, 5) >= 12 Then  'si la cellule de la ligne i et colonne 4 = V1 et valeur de la colonne 5>= 12
                        
               a = Int(Cells(i, 5) / 6) 'calcul du nombre de copie
                
               For b = 1 To a - 1 'on va copier autant de fois que nécessaire
            
                Rows(i).Copy 'on copie la ligne
                Rows(i + 1).Insert Shift:=xlUp
                Cells(i, 5) = 6
                i = i + 1
                Next
               
        Cells(i, 5) = 6
        
        End If
            i = i + 1
            Loop
        End Sub
        0
        1. Modérateur
          Bonjour Melanie1324,

          Essaie de prendre l'habitude d'entourer tes codes dans le forum par les balises destinées à cela.
          Tu trouveras l'icône correspondante, en haut de la zone de texte de réponse.
          Merci d'avance
          A+
          0
        2. Ok, je n'avais jamais remarqué. je le ferais dès à présent.
          0
        3. Modérateur
          Petite astuce supplémentaire, tu as dans cette icône (la 4ème en partant de la gauche <>) une petite liste déroulante.
          Si tu choisis la syntaxe basic, cela mettra ton code dans les mêmes couleurs que sous VBA...
          Plus simple après pour voir si une petite erreur s'est glissée...
          tu peux aussi saisir les balises <code> manuellement.
          Il suffit d'entourer ton code par : <code basic>'Ici ton code</code>
          Exemple :
          <code basic>Sub x()
          Dim i, a, b As Variant
          i = 3
          Do While Cells(i, 4) <> "" ' une boucle qui tournera tant que la cellule de la ligne i et colonne 4 est non vide
          If Cells(i, 4) = "V1" And Cells(i, 5) >= 12 Then 'si la cellule de la ligne i et colonne 4 = V1 et valeur de la colonne 5>= 12

          a = Int(Cells(i, 5) / 6) 'calcul du nombre de copie

          End If
          i = i + 1
          Loop
          End Sub</code>

          Donnera :
          Sub x()
          Dim i, a, b As Variant
          i = 3
          Do While Cells(i, 4) <> "" ' une boucle qui tournera tant que la cellule de la ligne i et colonne 4 est non vide
              If Cells(i, 4) = "V1" And Cells(i, 5) >= 12 Then  'si la cellule de la ligne i et colonne 4 = V1 et valeur de la colonne 5>= 12
                          
                 a = Int(Cells(i, 5) / 6) 'calcul du nombre de copie
                  
          End If
              i = i + 1
              Loop
          End Sub
          0
        4. Ok, merci. Je ne le savais pas. j'en prends note pour la suite.merci
          0