Excel

Résolu
CHABRIER Messages postés 4 Statut Membre -  
melanie1324 Messages postés 1561 Statut Membre -
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. melanie1324 Messages postés 1561 Statut Membre 156
     
    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. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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. melanie1324 Messages postés 1561 Statut Membre 156
       
      Ok, je n'avais jamais remarqué. je le ferais dès à présent.
      0
    3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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. melanie1324 Messages postés 1561 Statut Membre 156
       
      Ok, merci. Je ne le savais pas. j'en prends note pour la suite.merci
      0
  2. CHABRIER
     
    ç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
  3. melanie1324 Messages postés 1561 Statut Membre 156
     
    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