Créer des points de reprise genre "go to"

Yopub

XLDnaute Junior
Bonjour à toutes et à tous,
J'ai une macro me permettant de créer une fiche d'état civil, par le biais d'inputbox qui se suivent. Chaque saisie provoque une action (création d'une feuille par exemple) en plus de l'action visible d'inscrire la donnée dans une cellule précise.
Si l'utilisateur se trompe ou désire revenir sur une saisie, j'ai pensé créer une userform qui demande à quel endroit il désire reprendre la saisie. La réponse est sous forme de bouton, qui lance une macro identique à la macro globale, sans la partie déjà saisie :

MACRO GLOBALE :

PHP:
Sub CreerAgent()
'
' NouvelAgent Macro
' Macro enregistrée le 29/02/2012 par TELLIER

    PRENOM
    If Range("Prénom") = "" Then
        Exit Sub
    End If
    
    NOM
Dim NomAgent As String
NomAgent = [C4]
    If Range("C4") = "" Then
        Exit Sub
    End If
   
    DdNAgent
    If Range("C8") = "" Then
        Exit Sub
    End If
    
    ADRESSE
    If Range("C10") = "" Then
        Exit Sub
    End If
    
    If Range("C16") = "" Then
        Exit Sub
    End If
    If Range("C18") = "" Then
        Exit Sub
    End If
    
    CopiRef
    TriAlphaNomAgent
    TriAlphaFeuille

PRENOM, NOM etc sont des macros spécifiques.
Si l'utilisateur désire recommencer à partir du NOM par exemple, la macro correspondante (lancée à partir d'une userform) réécris l'ensemble du programme :
PHP:
Private Sub auNOM_Click()
'Lance la macro à partir du NOM
Unload Reprise

Dim PrenomAgent As String

    If [Prénom] = "" Then
        PRENOM
        Else
    End If

PrenomAgent = [A10000]

    NOM
    
Dim NomAgent As String
NomAgent = [C4]
    
    DdNAgent
    ADRESSE
    CopiRef
    TriAlphaNomAgent
    TriAlphaFeuille
    
'Revenir sur la feuille de l'agent
Sheets(NomAgent).Select

'Ouvrir un userform pour la saisie des données administratives
    FenSaisieAdm

'Précise qu'il reste le cadre d'emploi à sélectionner
MsgBox ("N'oubliez pas de choisir le cadre d'emploi, en cellule G8")

Range("Prénom").Clear
Range("G8:H8").Select

End Sub

Ce qui est long et fastidieux.

LA QUESTION EST : est-il possible de créer un marqueur, une balise sur la macro globale permettant à la macro de relance de simplement relancer la globale au point voulu (sans avoir à réécrire l'ensemble, donc) ???

Merci pour vos propositions. Question annexe : comment cloture-t-on une discussion sur ce forum ?
 

Littledave

XLDnaute Junior
Re : Créer des points de reprise genre "go to"

Salut YoPub,

Voici un petit exemple d'utilisation de Goto :

Code:
Sub test()


MaVar = ""


alea = Int(Rnd() * 100)


If alea < 20 Then GoTo Inf20
If alea < 40 Then GoTo Inf40
If alea < 60 Then GoTo Inf60
GoTo Sup60


Inf20:
MsgBox alea & " inférieur à 20"
GoTo fin


Inf40:
MsgBox alea & " supérieur à 20 et inférieur à 40"
GoTo fin


Inf60:
MsgBox alea & " supérieur à 40 et inférieur à 60"
GoTo fin


Sup60:
MsgBox alea & " supérieur à 60"
GoTo fin


fin:


End Sub

Les étiquettes sont formulées avec le sigle ':' à la fin.

En espérant que cela te donne des pistes.
@++
David
 

Dranreb

XLDnaute Barbatruc
Re : Créer des points de reprise genre "go to"

Bonjour.
Vous pouvez prévoir un paramètre Optionnal ByVal Étape As Long = 0
et mettre en tête On Étape GoTo Nom, DnAgent, etc.
et ces étiquettes correspondantes en tête de chaque étape.
Mais ça me parait assez bizarre comme conception: puisque vous parlez d'userform, pourquoi ne pas y mettre les textbox de saisie ?
À +
 

Discussions similaires

Réponses
21
Affichages
308

Statistiques des forums

Discussions
312 301
Messages
2 087 029
Membres
103 436
dernier inscrit
PascalH