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 :

[VBA-E]Message d'erreur lors de l'affectation d'une macro + prob form


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 22
    Points : 10
    Points
    10
    Par défaut [VBA-E]Message d'erreur lors de l'affectation d'une macro + prob form
    Bonjour tout le monde, je me suis souvent servi de ce site car j'y trouve souvent la réponse à la question que j'ai, mais la pour le coup je suis bien bloqué!

    J'ai conçu une petite macro sympa qui me fait toute une mise en forme d'un tableau avec gestion des majuscules et minuscules via une boite de dialogue etc... (il faut savoir que je n'ai jamais programmé, et que je ne me met au VB que depuis 2 jours, alors je suis plutôt fier ) mais...


    J'ai deux questions :

    Premièrement, je n'arrive pas à INCLURE ma macro dans excel. Je m'explique : la mettre dans un bouton, j'y arrive mais quand je rouvre excel (après un redemarrage par exemple) le bouton m'affiche un message d'erreur, et je dois donc importer ma macro pour recréer le bouton. j'aimerais pouvoir toujours cliquer sur mon bouton et que ça marche instantannément.

    De plus, j'ai fais ma macro avec une boite de dialogue créée avec le RAD qu'offre l'éditeur VB d'excel mais quand j'exécute ma maccro, la boite de dialogue reste affichée! je ne sais pas comment la "détruire". J'aimerais aussi pouvoir faire un code sans passer par le RAD, mais en apellant ma form directement, comment puis-je faire?

    Si vous le voulez je peux toujours poster mon code, mais il est plutot long et quand j'essaie de le mettre le message ne garde pas mes tabulations, ce n'est donc pas franchement lisible... :s


    Merci d'avance! =)

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    pour la premiére question c'est quoi ... le message d'erreur ..?

    sinon un peu de lecture peu-être


    pour les boîtes de dialogues : Utiliser les UserForm en VBA Excel





    PS : Pour insérer du code dans le forum voir la

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 22
    Points : 10
    Points
    10
    Par défaut
    Merci pour le guide des userforms

    Le message d'erreur en question est :

    "Impossible de trouver la macro "C:\Documents and Settings\Administrateur\Classeur1'!MeF'.

    "MeF" pour "Mise en Forme" c'est le nom de ma macro. ça viens peut etre du fait que j'enregistre directement ma macro et non pas le classeur sur lequel je la crée... qu'en pensez vous?


    #edit1 :

    En fait je pense qu'une macro est associée, de base, à un "fichier.xls". Donc quand je fais mon bouton après avoir sauvegardé mon classeur "test" sur lequel j'ai fait ma macro, quand je clique sur le bouton ainsi créé, la macro s'execute mais en même temps m'ouvre mon autre classeur "test.xls"... je ne veux pas que l'autre classeur s'ouvre. Je veux que la macro soit directement associée à Excel, et non pas à un classeur en particulier, c'est ça que je veux faire, est-ce possible?

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    est ou as tu mis le code de ta procédure ?
    dans un module public...?
    sa déclaration n'est pas précédé de "Private" ..?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 22
    Points : 10
    Points
    10
    Par défaut
    Attend je vais te donner mon code, comme ça tu comprendras mieux, la tu dois nager dans le flou...

    Alors, j'ai une "feuille" où il y a ma Userform et un Module qui me permet d'assigner le tout à un bouton :

    Le module est très court :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Sub MeF()
        UserForm1.Show
    End Sub
    Quand à la feuille "Userform1" elle est déjà beaucoup plus longue! :


    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
    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
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
     
    'Variable globale
    Dim Choisi As Integer
     
     
    'Quand on clique sur OK
    Private Sub CommandButton1_Click()
     
        ' Trouve la dernière case dite "écrite" de la première colonne et sélectionne le tout
        DernierTitre = Cells.Find("*", [A1], , , xlByColumns, xlPrevious).Column
        MAJ = DernierTitre
        Range("A1", Cells(1, DernierTitre)).Select
     
        ' Met le tout en gras et change la couleur en jaune
        Selection.Font.Bold = True
        With Selection.Interior
            .ColorIndex = 36
            .Pattern = xlSolid
        End With
     
        ' Place le nombre de lignes "écrites" dans une variable et sélectionne la case
        ' la case correspondant à la dernière ligne et la dernière colonne, pour étendre
        ' la sélection jusqu'à la première case
        DerniereLigne = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
        Cells(DerniereLigne, DernierTitre).Select
        Range("A1", Cells(DerniereLigne, DernierTitre)).Select
     
        ' Quadrille le tableau
        Selection.Borders(xlDiagonalDown).LineStyle = xlNone
        Selection.Borders(xlDiagonalUp).LineStyle = xlNone
        With Selection.Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Selection.Borders(xlEdgeTop)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Selection.Borders(xlEdgeBottom)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Selection.Borders(xlEdgeRight)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Selection.Borders(xlInsideVertical)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Selection.Borders(xlInsideHorizontal)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
     
        ' Sélectionne toutes les cases et ajuste les lignes et colonnes
        Cells.Select
        Selection.Columns.AutoFit
        Selection.Rows.AutoFit
     
        ' Fige la première ligne et resélectionne la première case
        Cells(2, 1).Select
        ActiveWindow.FreezePanes = True
        Range("A1").Select
     
     
        'Selection des majuscules
        If Choisi = 0 Then
     
            ' Met tous les titres en majuscule
            For Each MAJ In Range("A1", Cells(1, MAJ))
            MAJ.Value = UCase(MAJ.Value)
            Next MAJ
     
            Choisi = -1
     
        ElseIf Choisi = 1 Then
     
            ' Met tous les titres avec la première lettre en majuscule
            Dim Valeur As String
            Dim Plage, Cellule As Range
            Set Plage = Range("A1", Cells(1, DernierTitre))
            For Each Cellule In Plage
                Valeur = Mid(Cellule.Value, 2)
                Valeur = LCase(Valeur)
                Valeur = UCase(Mid(Cellule.Value, 1, 1)) & Valeur
                Cellule.Value = Valeur
            Next Cellule
     
            Choisi = -1
     
        ElseIf Choisi = 2 Then
     
            ' Met tout le tableau en majuscule
            DerniereLigne = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
            For Each c In Range("A1", Cells(DerniereLigne, DernierTitre))
                c.Value = UCase(c.Value)
            Next c
     
            Choisi = -1
     
        End If
        Unload UserForm1
    End Sub
     
    'Quand on clique sur le bouton ANNULER
    Private Sub CommandButton2_Click()
        Unload UserForm1
    End Sub
     
    'Quand on choisit l'option "La premère lettre des titres en majuscule"
    Private Sub L_T_Maj_Click()
        Choisi = 1
    End Sub
     
    'Quand on choisit l'option "Tous les titres en Majuscule"
    Private Sub T_T_MAJ_Click()
        Choisi = 0
    End Sub
     
    'Quand on choisit l'option "Tout le tableau en majuscule"
    Private Sub T_TAB_MAJ_Click()
        Choisi = 2
    End Sub

  6. #6
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    en fait habituellement une macro est sauvée dans le classeur... mais elle peu agir sur d'autre classeurs...voir ThisWorkBook et ActiveWorkBook par exemple....

    tu peu aussi mettre le classeur contenant ta macro dans le répertoire XLOuvrir ( ou XLStart)
    Citation Envoyé par Aide en ligne Excel
    Les dossiers XLOuvrir figurent en C:\Documents and Settings\nomutilisateur\Application Data\Microsoft\Excel ou en C:\Program Files\Microsoft Office\Office10.
    tu masque ensuite toutes les feuilles de calcul de ton "classeur macro"

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 22
    Points : 10
    Points
    10
    Par défaut
    Alors, autant te le dire tout de suite, je n'ai rien compris ^^ mais je rechercherais et je trouverais, je pense que ça répondra à ma question!! =) Merci beaucoup et je tiens informé après ^^

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 22
    Points : 10
    Points
    10
    Par défaut
    Voila, le nom du topic est changé !! ^^ je suis sous Excel 2003 =)

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 22
    Points : 10
    Points
    10
    Par défaut
    J'ai mis mon classeur dans le répertoire xlstart, j'ai vu que ça marche vachement bien mais alors...

    Citation Envoyé par bbil
    tu masque ensuite toutes les feuilles de calcul de ton "classeur macro"
    ... la! ???????????


    lol

    En gros j'ai accès à ma maccro de départ, mon bouton qui marche, ça ne m'ouvre plus un autre classeur quand je clique sur le bouton... nikel quoi! Mais pour le coup, quand j'enregistre ma base ainsi crée, bah le lien de mon bouton change ! Pire : je ne cherche pas à créer de bases de données, mais en traiter, du coup je n'ouvre pas directement le classeur contenant ma maccro avec XLStart... compliqué hein???



    #edit1 :

    Argh j'ai dégouté les gennnnnns :'(

Discussions similaires

  1. [XL-2003] Message d'erreur lors de l'exécution d'une macro. depuis un menu contextuel
    Par juju05 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/04/2015, 16h44
  2. Réponses: 15
    Dernier message: 02/06/2010, 15h08
  3. Réponses: 6
    Dernier message: 13/12/2007, 03h13
  4. message d'erreur lors de mise à jour d'une BD access
    Par Abydos Business Group dans le forum Access
    Réponses: 2
    Dernier message: 25/01/2006, 16h36
  5. message d'erreur lors de la création d'une base
    Par franculo_caoulene dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 16/04/2004, 15h47

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