Excel

Résolu/Fermé
CHABRIER Messages postés 4 Date d'inscription jeudi 28 novembre 2013 Statut Membre Dernière intervention 24 novembre 2014 - 28 nov. 2013 à 11:21
melanie1324 Messages postés 1504 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 - 29 nov. 2013 à 09:39
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

melanie1324 Messages postés 1504 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
Modifié par pijaku le 28/11/2013 à 16:34
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
28 nov. 2013 à 16:35
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 vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
28 nov. 2013 à 16:51
Ok, je n'avais jamais remarqué. je le ferais dès à présent.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
28 nov. 2013 à 16:56
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 vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
28 nov. 2013 à 17:39
Ok, merci. Je ne le savais pas. j'en prends note pour la suite.merci
0
ç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 vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
29 nov. 2013 à 09:39
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