[VBA] transformer GoTo en Do while

Résolu/Fermé
Noodlesnood Messages postés 33 Date d'inscription mercredi 17 janvier 2007 Statut Membre Dernière intervention 10 octobre 2008 - 15 févr. 2007 à 10:59
Noodlesnood Messages postés 33 Date d'inscription mercredi 17 janvier 2007 Statut Membre Dernière intervention 10 octobre 2008 - 19 févr. 2007 à 11:19
Bonjour,

J'ai un code qui fonctionne, mais étant donné que le GoTo n'est pas vraiment apprécié, on m'a conseillé de modifier mon code, j'ai donc pensé à une syntaxe Do While ... Loop


Code d'origine :

'inventaire CA
sommeCA = 0
compterCA= 0
For Each cell In ActiveSheet.UsedRange
If cell.Value = "CA" Then
On Error Resume Next
sommeCA= sommeCA + 1
On Error GoTo 0
compterCA = compterCA + 1
End If
Next
Range("C38") = (compterCA) - 1

J'ai tenté de le remplacer par :

'inventaire CA
sommeCA = 0
compterCA = 0
For Each cell In ActiveSheet.UsedRange
Do While cell.Value = "CA"
sommeCA = sommeCA + 1
compterCA = compterCA + 1
Loop
Range("C38") = (compterCA - 1)

Quelles sont mes erreurs?

3 réponses

ruzakruzak Messages postés 459 Date d'inscription vendredi 9 février 2007 Statut Membre Dernière intervention 31 mai 2007 246
15 févr. 2007 à 14:26
Ben le truc c'est que ton 1er code teste toute la plage, tandis que le 2e s'arrête au premier contenu différent de CA. Est-ce ce que tu veux vraiment faire ??
1
Noodlesnood Messages postés 33 Date d'inscription mercredi 17 janvier 2007 Statut Membre Dernière intervention 10 octobre 2008 2
15 févr. 2007 à 16:36
Non je veux bien tester toute la plage et non m'arrêter au 1er non-CA, afin de les comptabiliser à la fin de la colonne.
1
domiH1 Messages postés 19 Date d'inscription mardi 28 novembre 2006 Statut Membre Dernière intervention 5 août 2014 2
15 févr. 2007 à 17:49
bonjour.
La règle syntaxique est :
"on error " est toujours suivi de "goto" + n°ligne ou étiquette (pour traitement suite à l'erreur) ou 0 (pour invalider) ou suivi de "resume next" pour continuer comme si rien ne s'était passé.
avec "on error " il n'y a donc pas le choix.
Ton programme est lisible facilement, ne change rien.
0
Sylvain Laurence
17 févr. 2007 à 23:35
Bonjour,

J'ajouterais seulement que la seule bonne façon de faire de la gestion d'erreur dans VB et VBA, c'est l'utilisation du GOTO.

Tous mes programme ont cette forme. Ça fait en sorte que l'usager n'a pas la fenêtre permettant d'aller dans le code avec le bouton Debug.

Function Nom_de_fonction()
On Error GoTo Error_Sub

   'code

Exit_Sub:
    Exit Function
Error_Sub:
    MsgBox Err.Description
    Resume Exit_Sub
End Function


Au plaisir!

Sylvain Laurence
Groupe Conseil Lartis Inc.
Développeur Acomba
http://acomba-developpeur-revendeur-integrateur-formateur-laval.lartis.com/
http://www.lartis.com
0
Noodlesnood Messages postés 33 Date d'inscription mercredi 17 janvier 2007 Statut Membre Dernière intervention 10 octobre 2008 2
19 févr. 2007 à 11:19
Merci pour vos précisions ; )
0