IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Creer une maccro appelant un UserForm


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2008
    Messages : 235
    Par défaut Creer une maccro appelant un UserForm
    Bonjour, j'ai un petit menu qui a été rajouter a droite du point d'intérrogation dans Excel, dans le code de ce menu, j'ai rajouter un champ qui j'aimerais bien que lorsque que click dessus, il me lance un UserForm que j'ai créer. Simplement quand je click sur mon champ, il me dit:
    Impossible de trouver la macro "Excel_To_PGI.slc!selection_Journal2"
    Si quelqu'un serait comment s'y prendre, sa serait sympathique.
    D'avance merci

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Maintenant que ta nouvelle discussion est ouverte (plus pratique) , je pense qu'un bouton de commande sur ta feuille suffirait appelant l'USF

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    load userform1 'attention mettre le nom del'userform
    userform1.show 'idem nom de l'userform
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    pour pouvoir t'aider il faudrait le bout de code qui définie ton bouton
    et sans doute par la suite la macro qui lance l'userform
    (et aussi savoir ou il sont situé)


    edit bonjour casefayere

    Pour mes bouton j'utilise par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Set Cbut = Cbar.Controls.Add(Type:=msoControlButton)
     
    With Cbut
        .Style = msoButtonIconAndCaptionBelow
        .Caption = "Supprimer"
        .OnAction = "supr"
        .FaceId = 67
        .TooltipText = "Supprime l'onglet de chargement de résultat en cours."
    End With
    qui lance une macro nommée supr
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    sub supr()
    Application.DisplayAlerts = False
    ActiveSheet.Delete
    Application.DisplayAlerts = True
    end sub

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2008
    Messages : 235
    Par défaut
    Désole de faire le boulet, mais je le place ou ton code casefeyre?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2008
    Messages : 235
    Par défaut
    Ben alors voici le code de mon menu :

    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    Public MenuCptaPGI As Object
     
    Sub Set_Menu()
        MenuBars(xlWorksheet).Menus.Add Caption:="Compta PGI"
        Set MenuCptaPGI_1 = MenuBars(xlWorksheet).Menus("Compta PGI"). _
            MenuItems.AddMenu(Caption:="Insérer Lignes de champs")
     
        With MenuCptaPGI_1.MenuItems
            .Add "Ecritures Générales PGI", "LigneChampsEcrGen"
            .Add "Comptes Auxiliaires PGI", "LigneChampsCptAux"
            .Add "Comptes Généraux PGI", "LigneChampsCptGen"
            .Add "Sections Analytiques PGI", "LigneChampsCptAna"
            .Add "Tables Libres PGI", "LigneChampsTables"
            .Add "Sous Sections Analytiques PGI", "LigneChampsSsSection"
            '.Add "Adresse Tiers PGI", "LigneChampsAdrAux"
        End With
        'MenuCptaPGI_1.MenuItems("Adresse Tiers PGI").Enabled = False
     
        MenuBars(xlWorksheet).Menus("Compta PGI").MenuItems.Add "-"
     
        Set MenuCptaPGI_1 = MenuBars(xlWorksheet).Menus("Compta PGI"). _
            MenuItems.AddMenu(Caption:="Traiter les écritures PGI")
     
        With MenuCptaPGI_1.MenuItems
            .Add "Traiter Centralisation", "DepartCentralisation"
            '.Add "Recalcul Numéropièce", "Raccourci2"
            .Add "-"
            .Add "Calcul du Solde Progressif", "Solde_progressif"
            .Add "Total Déb/Créd par Journal", "Equilibre_Journaux"
            .Add "-"
            .Add "Contrôle équilibre Montant1", "VerifMontant1"
            .Add "Contrôle équilibre Montant2", "VerifMontant2"
            .Add "Contrôle équilibre Montant3", "VerifMontant3"
            .Add "-"
            '.Add "Créer un 413 par Ligne de 411", "Retraiter413"
            .Add "Equilibrer à la date", "Equilibrage_Date"
            .Add "Suppression des Ecart de conversion Euro", "Suppression_Ecart_Euro"
            .Add "Traitement du lettrage", "s_Lettrage"
            ''.Add "Recalcul Numéropièce", "Raccourci2"
            .Add "-"
            .Add "Générer les comptes Généraux", "GénéCPTGEN"
            .Add "Générer les comptes Auxiliaires", "GénéCPTAUX"
            .Add "Générer les Sections analytiques", "GénéSECTION"
        End With
     
        With MenuBars(xlWorksheet).Menus("Compta PGI").MenuItems
            .Add "-"
            .Add "Générer Fichier Texte", "BoiteDialogueDépart"
            .Add "-"
        End With
     
        Set MenuCptaPGI_1 = MenuBars(xlWorksheet).Menus("Compta PGI"). _
            MenuItems.AddMenu(Caption:="Traitements Divers")
     
        With MenuCptaPGI_1.MenuItems
            .Add "Selectionner un journal"
            .Add "Créer un Table de Correspondance", "TC_Creation"
            .Add "Convertir des cellules texte", "Conversion"
            .Add "Bourrer à Gauche ou à Droite", "Bourrage"
        End With
     
        Set MenuCptaPGI_1 = Nothing
     
        MenuBars(xlWorksheet).Menus("Compta PGI").MenuItems.Add "-"
     
        Set MenuCptaPGI_1 = MenuBars(xlWorksheet).Menus("Compta PGI"). _
            MenuItems.AddMenu(Caption:="Importer Formats PGI")
     
        With MenuCptaPGI_1.MenuItems
            .Add "Ecritures Générales (-> RIB)", "ImporterPGI"
            .Add "Comptes Auxiliaires (-> Mode Règlement)", "ImporterAuxiliaire"
            .Add "Comptes Généraux", "ImporterGénéraux"
            .Add "Sections Analytiques", "ImporterSection"
            '.Add "Adresse des Tiers", "ImporterAdresse"
        End With
        'MenuCptaPGI_1.MenuItems("Adresse des Tiers").Enabled = False
     
    '    With MenuBars(xlWorksheet).Menus("Compta PGI").MenuItems
    '        .Add "-"
    '        .Add "Désinstaller EXCEL_TO_PGI", "Arret_Excel_To_PGI"
    '    End With
     
    End Sub
     
    Sub pp()
        nouveauMenuSecondaire.MenuItems.Add "Aide suppflémentaire", "df"
    End Sub
     
     
    Sub Reset_Menu()
        On Error Resume Next
        MenuBars(xlWorksheet).Menus("Compta PGI").Delete
    End Sub
    Et voici le code de mon userform :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    Private Sub btn_ok_Click()
    Dim rc As Range, rg As Range, firstaddress As String, irow As Integer, nomfeuille As String 'declaration des variables
    'rechercher dans la colonne 'A' les valeurs de la TextBox
     Columns("A:A").Select
        Set rc = Selection.Find(txtboxJournal, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
               :=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
               False)
    'création d'une nouvelle feuille et enregistrement de son nom dans une variable
    Sheets.Add After:=Worksheets(Worksheets.Count)
    nomfeuille = ActiveSheet.Name
    'selection de la feuille d'information
    Sheets("Documentecriture").Select
    If Not rc Is Nothing Then
        'Stockage de l'adresse dela première cellule trouvée pour ne pas boucler dessus
           firstaddress = rc.Address
        End If
        irow = 1
        'Screenupdating = false, empêche de voir ce qu'il se passe pendant l'exécution de la macro.
        Application.ScreenUpdating = False
        Do While Not rc Is Nothing
          rc.Activate
          'Sélection de la ligne entière
          rc.EntireRow.Select
          Selection.Copy
          'selection de la nouvelle feuille pour enregistrer les résultat dedans
          Sheets(nomfeuille).Select
          'On se positionne sur le ligne en-dessous de la dernière ligne copiée
          'en incrémentant un compteur irow initialisé à 1 au départ.
          Cells(irow, 1).Select
          irow = irow + 1
          Selection.Insert Shift:=xlDown
          Application.CutCopyMode = False
          'reselection de la feuille d'information pour la suite du parcours
          Sheets("Documentecriture").Select
          rc.Activate
          Set rc = Cells.FindNext(rc)
          If rc Is Nothing Then
            Exit Do
          End If
          'Si la recherche est terminée et qu l'on revient sur la première cellule trouvée, on sort.
          If rc.Address = firstaddress Then
            Exit Do
          End If
        Loop
        Application.CutCopyMode = False
        Sheets("Documentecriture").Select
        Application.Goto reference:=Range("A1"), Scroll:=True
        MsgBox ("Le Journal a bien été copié")
    End Sub
     
     
     
    Private Sub txtboxJournal_Change()
     
    End Sub
    Mon Userform ce trouve dans le sous onglet 'feuille' sous le nom de 'selection_Journal2'

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2008
    Messages : 235
    Par défaut
    Je voit met les captures d'écran avec pour vous éclairer.
    La premiere est l'illustration de mon menu sous Excel, et la seconde est l'emplacement de mon UserForm.

  7. #7
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Le code du bouton qui doit lancer le userform aurais suffit (et aurais évité de chercher la bonne ligne, que je nais pas trouvé d'ailleurs)

    As tu au moins une macro nomé selection_Journal2 puisque d'après ton premier post c'est elle qui est lancé par ton bouton? Si oui ou est elle?

    Si non tu rajoute dans le même modle que celui qui définie ton menue ce que t'as donnée casefayere (avec comme il te la dit le nom de ton userform a la place de userform1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    sub selection_Journal2()
    load userform1 'attention mettre le nom del'userform
    userform1.show 'idem nom de l'userform
    end sub

  8. #8
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    tu crées un bouton de commande sur ta feuille, ça tu sais faire ?
    dans un module, dans l'editeur vba, admettons que ton bouton soit appelé CommandButton1
    si oui si tu est sur autre que excel 2007, click droit dessus et affecter une macro et tu tapes la macro ci-dessus, qui devrait se terminer ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub CommandButton1_Click()
    load userform1 'attention mettre le nom del'userform
    userform1.show 'idem nom de l'userform
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  9. #9
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Excuses moi krovax, on se croise souvent, donc bonjour, merci pour lui et bonne journée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  10. #10
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Je ne peux pas voir tes miniatures !!!!
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2008
    Messages : 235
    Par défaut
    Ben il aurrait fallut que sa soit dans le menu, car c'est une sorte de petit logiciel que l'on lance a l'aide d'excel. Donc il faudrait que sa soit mon menu qui lance cette option

  12. #12
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Re,
    ne maniant pas les menus, j'aurais proposé la meme solution sans connaitre la vrai marche à suivre, ça me donnera des idées, merci Krovax
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appeler un UserForm dans une boucle
    Par Kalphyre dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/11/2014, 17h24
  2. [XL-2007] creation fonction appelant divers userform et géré par une variable
    Par chrisaccess dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/01/2014, 21h44
  3. Appeler une macro d'un userform d'un autre VBAproject
    Par chrystobale dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/11/2009, 14h09
  4. jaimerais savoir commen creer une grille.......
    Par zephyr dans le forum Flash
    Réponses: 5
    Dernier message: 29/04/2003, 12h14
  5. [VB6]Créer une Base de données
    Par ThierryAIM dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 07/04/2003, 17h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo