Pb VBA boucle qui s'arrete.
Résolu
totophe3883
-
totophe3883 -
totophe3883 -
Bonjour à tous et à toutes,
je me permet de vous écrire car je suis en train de développer un fichier excel pour me permettre de "gérer" une petite entreprise et je bloque sur un problème au niveau de mon VBA.
j'ai crée une base de donnée avec tous mes produits. il y a d'indiqué les prix, la désignation, les références.... et surtout une colonne quantité à renseigner.
de l'autre côté, j'ai créé une seconde feuille au nom de devis_clients où je souhaite transférer tous les produits dont il y a une quantité pour y mettre en forme dans le devis.
J'ai créé un VBA dont voici le code, mais il y a un pb :
Sub transfert()
Dim lig As Long
Dim compt As Long
compt = 3
For lig = 3 To 94
If Range("E" & compt) > 0 Then
Sheets("DEVIS_Clients").Range("B" & compt + 21).Value = Range("A" & compt).Value
Sheets("DEVIS_Clients").Range("A" & compt + 21).Value = Range("E" & compt).Value
Sheets("DEVIS_Clients").Range("E" & compt + 21).Value = Range("D" & compt).Value
Sheets("DEVIS_Clients").Range("C" & compt + 21).Value = Range("B" & compt).Value
compt = compt + 1
End If
Next lig
End Sub
symptôme :
Lorsque je clique sur le bouton pour traiter le tableau, le transfert s'effectue bien sur le devis mais lorsque la quantité n'est pas indiquée, la boucle s'arrête et ce qu'il y a après n'est pas transféré.
Je me casse la tête dessus depuis deux jours et je commence à craquer !! lol .
à savoir que je souhaite que toutes les lignes se suivent sur le devis et qu'il n'y ait pas de saut de ligne.
là , je sèche.... .
Je vous remercie par avance.
chris
je me permet de vous écrire car je suis en train de développer un fichier excel pour me permettre de "gérer" une petite entreprise et je bloque sur un problème au niveau de mon VBA.
j'ai crée une base de donnée avec tous mes produits. il y a d'indiqué les prix, la désignation, les références.... et surtout une colonne quantité à renseigner.
de l'autre côté, j'ai créé une seconde feuille au nom de devis_clients où je souhaite transférer tous les produits dont il y a une quantité pour y mettre en forme dans le devis.
J'ai créé un VBA dont voici le code, mais il y a un pb :
Sub transfert()
Dim lig As Long
Dim compt As Long
compt = 3
For lig = 3 To 94
If Range("E" & compt) > 0 Then
Sheets("DEVIS_Clients").Range("B" & compt + 21).Value = Range("A" & compt).Value
Sheets("DEVIS_Clients").Range("A" & compt + 21).Value = Range("E" & compt).Value
Sheets("DEVIS_Clients").Range("E" & compt + 21).Value = Range("D" & compt).Value
Sheets("DEVIS_Clients").Range("C" & compt + 21).Value = Range("B" & compt).Value
compt = compt + 1
End If
Next lig
End Sub
symptôme :
Lorsque je clique sur le bouton pour traiter le tableau, le transfert s'effectue bien sur le devis mais lorsque la quantité n'est pas indiquée, la boucle s'arrête et ce qu'il y a après n'est pas transféré.
Je me casse la tête dessus depuis deux jours et je commence à craquer !! lol .
à savoir que je souhaite que toutes les lignes se suivent sur le devis et qu'il n'y ait pas de saut de ligne.
là , je sèche.... .
Je vous remercie par avance.
chris
A voir également:
- Pb VBA boucle qui s'arrete.
- L'indice n'appartient pas à la sélection vba - Forum VB / VBA
- Facebook s'arrête systématiquement - Forum Facebook
- Incompatibilité de type vba ✓ - Forum Programmation
- Paramètres s'arrête systématiquement ✓ - Forum Samsung
- Smart tv qui s'allume et s'éteint en boucle - Forum Téléviseurs
1 réponse
Bonjour,
essaie plutot comme ça:
Sub transfert()
Dim lig As Long
Dim compt As Long
compt = 3
For lig = 3 To 94
If Range("E" & lig) > 0 Then
Sheets("DEVIS_Clients").Range("B" & compt + 21).Value = Range("A" & lig).Value
Sheets("DEVIS_Clients").Range("A" & compt + 21).Value = Range("E" & lig).Value
Sheets("DEVIS_Clients").Range("E" & compt + 21).Value = Range("D" & lig).Value
Sheets("DEVIS_Clients").Range("C" & compt + 21).Value = Range("B" & lig).Value
compt = compt + 1
End If
Next lig
End Sub
bonne continuation...
essaie plutot comme ça:
Sub transfert()
Dim lig As Long
Dim compt As Long
compt = 3
For lig = 3 To 94
If Range("E" & lig) > 0 Then
Sheets("DEVIS_Clients").Range("B" & compt + 21).Value = Range("A" & lig).Value
Sheets("DEVIS_Clients").Range("A" & compt + 21).Value = Range("E" & lig).Value
Sheets("DEVIS_Clients").Range("E" & compt + 21).Value = Range("D" & lig).Value
Sheets("DEVIS_Clients").Range("C" & compt + 21).Value = Range("B" & lig).Value
compt = compt + 1
End If
Next lig
End Sub
bonne continuation...
je suis novice dans la prog et j'ai eu bo avoir cherché à droite à gauche mais là , CT la misère !!!
Merci pour ton aide !!
je te souhaite une très bonne continuation.
@+++
Chris
il s'agit d'une boucle "for next" , lig est une sorte de " compteur" où 3 étant la 1ère ligne à lire et 94 le nombre de fois qu'il doit le faire ( 94 - 3 = 91, c'est le nombre de produits que j'ai à lire )
"compt" est un autre compteur, qui lui servira à incrémenter la ligne du coté du "devis mis en forme" lorsque E sera validé par E>0.
J'espère avoir répondu à ta question.