boucle capricieuse

  • Initiateur de la discussion joris
  • Date de début
J

joris

Guest
Bonjour a tous,

j'ai un problem que je n'arrive pas a resoudre le mieux est de vous montrer mon code :


Call fill_tender("Contractual clauses", "A")
Call fill_tender("Price", "B")



Sub fill_tender(page As String, col As String)

For i = 1 To 3
test = Sheet3.Range(col & i).Value
Sheet3.Cells(7 + i, 1).Value = test
If test <> "" Then
Worksheets(page).Cells(3 + 2 * i, 1).Value = i & ")" & Worksheets("Sheet2").Range("A" & test).Value
Worksheets(page).Cells(32 + i, 1).Value = i & ")" & Worksheets("Sheet2").Range("D" & test).Value
Worksheets(page).Cells(32 + i, 7).Value = Worksheets("Sheet2").Range("T" & test).Value
Worksheets(page).Cells(32 + i, 8).Value = Worksheets("Sheet2").Range("R" & test).Value
End If
Next i

End Sub


Voila j'appelle trois fois de suite la fonction fill_tender avec comme parametre le nom de la sheet a remplir plus le nom de la colonne ou sont stoke les infos.
Normallement ils y a des chiffre dans A1 A2 et A3 tout comme dans B1 B2 B3
Cependant quand il n'y en a pas je veux rien faire d'ou le If test <> "" Then
.

Le probleme que j'ai c'est que par exemple si A3 est vide ou B1 la boucle s'arrete et je ne comprend pas pourquoi.

Merci de votre aide

Joris
 
A

Arnaud

Guest
salut,

au premier abord, je ne vois rien qui me choque. As tu essayer de lancer ton code en pas à pas pour voir exactement ce qui se passe ??

sinon essaye de mettre une gestion d'erreur, tu a peut être un truc qu pète.
pour ça, écris


Sub fill_tender(page As String, col As String)

On Error GoTo MonErreur

'ici ton code

exit sub
MonErreur:
MsgBox err.Description
End Sub
 
J

joris

Guest
merci pour ta reponse rapide.

je suis nouveau en vba et je sais pas comment marche le pas a pas.
J'ai essayer de mettre le message d'erreur il dit qu'il n'y pas d'erreur.

Ce qui est bizarre c'est que j'affiche
Sheet3.Cells(7 + i, 1).Value = test

et que quand j'ai bien les trois chiffres A1 A2 A3 et B1 B2 B3 ca marche bien...
sinon si par exemple A3 est vide ca affiche meme pas B1 B2 B3

Je vais continuer a chercher

Merci

Joris
 
A

Arnaud

Guest
re

alors pour le pas à pas, il faut que tu mette un point d'arrêt, pour cela tu click sur la petite bande grise a gauche de ton code au niveau de la ligne ou tu veux qu'il s'arrête donc ici le début de ta fonction.
et ensuite tu avance dans le code en appuyant sur F8 ( tu peut avancer de différente façon, va dans le menu Débogage pour toutes les voir ).
et donc comme ça tu peut regarder ou il passe et qu'elle sont les valeurs de tes variables en passant le curseur dessus.
 
J

joris

Guest
Merci beaucoup Arnaud pour tes conseils.
Grace au mode debugage j'ai trouver mon erreur. Ce n'etait pas une erreur de code tu avais raison mais seulement j'avais mal place mon appel de fonction. Il etait imbrique dans une autre fonction et ce n'etait pas la bonne solution.

Merci encore

Joris
 

Discussions similaires

Réponses
6
Affichages
273

Statistiques des forums

Discussions
312 392
Messages
2 088 004
Membres
103 695
dernier inscrit
acimi