Organiser sa macro

HerwinPew Messages postés 11 Date d'inscription jeudi 14 octobre 2010 Statut Membre Dernière intervention 25 novembre 2010 - 29 oct. 2010 à 09:31
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 2 nov. 2010 à 12:39
Bonjour,

Je suis grand débutant en macro, et j'ai crée mon premier bébé.

Et grâce à l'aide de certains de ce forum, il marche :)
Il marche oui, mais je voudrais le faire courir.
En d'autres termes perfectionner ma macro, je voudrais pouvoir gérer les erreurs etc... que tout soit net.

Le problème c'est qu'en se perfectionnant, ma macro a pris du poids et je commence à avoir du mal à gérer la suite.
J'aimerais savoir comment organiser ma macro avec des étiquettes par exemple (j'ai des souvenirs de la programmation sur Ti 89 où on pouvait créer des étiquettes).

Comment créer des sous-programmes dans ma macro ?
Et comment les gérer ? (faire des "resume" et des liens vers ces sous programmes qui marchent)

Par exemple, j'ai une inputbox dans ma macro, je voudrais créer un bouton "précédent" et pouvoir gérer le fait que lorsqu'on entre un mauvais nom de fichier, un message s'affiche disant "mauvais nom" et qu'il y ait un retour à la procédure initiale puis une reprise du processus.

Merci d'avance pour votre aide !

P.S. j'ai fait des recherches sur google notamment et n'ai rien trouvé de clair dessus.

4 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
29 oct. 2010 à 13:52
Bonjour,

L'utilisation d'étiquettes en VBA est possible (ah..oui..moi aussi j'aimais bien les TI ^^ )
L'appel d'une étiquette se fait avec l'instruction GOTO nom_etiquette

Et la "déclaration" d'une étiquette avec la syntaxe Nom_etiquette:

Par contre, pour découper ton programme je te conseillerai plutot l'utilisation de Fonctions.

Exemple :
Sub Principal()

teste = InputBox("entrez OUI ou autre chose ^^", "Test")
If teste = "OUI" Then
    a = test1()
Else
    b = test2()
End If

End Sub

Function test1()
MsgBox "test1"
End Function

Function test2()
MsgBox "test2"
End Function



Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
0
cs_Orohena Messages postés 577 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 20 novembre 2010 4
30 oct. 2010 à 01:38
Bonjour

En bonus, voici comment boucler sur la saisie d'un nom de fichier jusqu'à ce que le fichier saisi soit correct (par exemple, qu'il y ait un fichier de ce nom dans le répertoire Mes Documents) :

Function SaisieNomFichier() As String
mauvaisNom = True
Do While mauvaisNom
nomFichier = InputBox("Nom du fichier : ")
if Dir(nomFichier) = "" then
MsgBox "Nom de fichier incorrect"
Else
mauvaisNom = False
Loop
SaisieNomFichier = nomFichier
End Function

Cordialement
0
HerwinPew Messages postés 11 Date d'inscription jeudi 14 octobre 2010 Statut Membre Dernière intervention 25 novembre 2010
2 nov. 2010 à 11:42
Super merci beaucoup à vous deux, je vais potasser ça et m'entraîner avec les fonctions.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
2 nov. 2010 à 12:39
Bonjour,

En bonus n°2 : voici comment remplacer ton InputBox par une fenetre qui te permet d'aller parcourir tes dossiers pour trouver ton fichier (comme si tu faisais : fichier / ouvrir)

FullFileName = Application.GetOpenFilename("Excel files (*.xl*),*.xl*", _
    1, "Custom Dialog Title", , False)


Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
0
Rejoignez-nous