Rechercher : dans
Par :

[VBA] transformer GoTo en Do while

Dernière réponse le 19 fév 2007 à 11:19:23 Noodlesnood, le 15 fév 2007 à 10:59:06 
 Signaler ce message aux modérateurs

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? Je suis inutile donc indispensable °_°

Configuration: Windows XP
Firefox 2.0.0.1

Meilleures réponses pour « [VBA] transformer GoTo en Do while » dans :
VB6/VBA Transformer nombre en texte VoirIntroduction Préliminaires VB6 Dans le module de la forme Dans Module1 Introduction La fonction peut transformer des nombres de l'unité jusqu'à 999 tera. Prend en compte la syntaxe pour le français de France, de Belgique et de...
Transformer un fichier Word (.doc) en PDF VoirTransformer en fichier PDF un fichier Microsoft Word (.doc) Rien de plus simple ! Ouvrez votre fichier *.doc avec OpenOffice.org Réglez éventuellement la mise en page par le menu Format / Page... Dès lors, 2 solutions pour transformer...
Comment lire un fichier ligne par ligne VoirComment lire un fichier ligne par ligne Préambule Boucle while Syntaxe Exemple Astuces Bonus Boucle for Syntaxe Préambule Une des erreurs les plus communes dans l'apprentissage des scripts "bash" sous GNU/LInux pour lire un fichier...
Télécharger Transform XP to Vista VoirSi vous cherchez quelque chose de nouveau pour personnaliser l'interface de votre Windows XP, mais que vous n'avez pas le temps pour des tests. Ce thème est fait pour vous. Transform Xp to Vista est un pack complet pour la personnalisation de votre...
VBScript - Les structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle ? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non, c'est-à-dire si la valeur de son expression vaut 0 ou 1 (VBScript associe le mot clé true à...
Transformations de XML avec XSLT VoirXSLT et XSL/FO XSL (eXtensible Stylesheet Language) possède deux composantes : XSLT, eXtensible Stylesheet Transformation XSL/FO, eXtensible Stylesheet formatting le langage de transformation des données (XSLT, eXtensible Stylesheet...
Les éléments de transformation XSL VoirLes éléments de transformation Les éléments de transformations permettent de sélectionner et effectuer des opérations sur les éléments du document XML. Leur syntaxe est la suivante : Remarquez la présence du / indiquant que...

1

ruzakruzak, le 15 fév 2007 à 14:26:23
  • +1

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 ??

Répondre à ruzakruzak

2

Noodlesnood, le 15 fév 2007 à 16:36:20
  • +1

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. Je suis inutile donc indispensable.

Répondre à Noodlesnood

3

domiH1, le 15 fév 2007 à 17:49:58

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.

Répondre à domiH1

4

Sylvain Laurence, le 17 fév 2007 à 23:35:31

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-la­val.lartis.com/
http://www.lartis.com

Répondre à Sylvain Laurence

5

 Noodlesnood, le 19 fév 2007 à 11:19:23

Merci pour vos précisions ; ) Je suis inutile donc indispensable.

Répondre à Noodlesnood