Excel

Résolu
CHABRIER Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
melanie1324 Messages postés 1504 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

3 réponses

melanie1324 Messages postés 1504 Date d'inscription   Statut Membre Dernière intervention   155
 
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
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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
melanie1324 Messages postés 1504 Date d'inscription   Statut Membre Dernière intervention   155
 
Ok, je n'avais jamais remarqué. je le ferais dès à présent.
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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
melanie1324 Messages postés 1504 Date d'inscription   Statut Membre Dernière intervention   155
 
Ok, merci. Je ne le savais pas. j'en prends note pour la suite.merci
0
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
melanie1324 Messages postés 1504 Date d'inscription   Statut Membre Dernière intervention   155
 
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