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 -
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
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:
- Excel
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel moyenne - Guide
3 réponses
Bonjour,
essaie ca :
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
ç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
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
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
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
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+
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 :