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 :

Problème avec les macro supplementaires


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 211
    Par défaut Problème avec les macro supplementaires
    Bonjour tout le monde,

    Après avoir créer des macros pour un fichier Excel, j'essaie maintenant de les mettre dans une barre d'outils permettant de simplifier l'appel de ces macros, voila ma marco Comparaison2

    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
    Sub Comparaison2()
        Dim totauxP As Variant
        Dim totauxA As Variant
        
        totauxA = ThisWorkbook.Sheets("2").Range("H58").Value
        totauxP = ThisWorkbook.Sheets("3").Range("H50").Value
        
        Ecart = Abs(Round((totauxA - totauxP), 3))
        
        If Ecart <> 0 Then
            MsgBox ("Passif : " & totauxP & vbCrLf & "Actif est : " & totauxA & vbCrLf & "Ecart : " & Ecart)
        Else
            MsgBox ("Passif : " & totauxP & vbCrLf & "Actif est : " & totauxA & vbCrLf & "le compte est bon")
        End If
    End Sub
    avant elle marchait nikel mais après l'avoir mise comme macro supplémentaire une fois que je click sur le boutton créer pour l'appelé dans ma barre d'outil on me fait une erreur comme quoi l'indice n'appartient pas à la selection à ce niveau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    totauxA = ThisWorkbook.Sheets("2").Range("H58").Value
    je comprens pas pourquoi surtout que ça fonctionnait avant

  2. #2
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Salut,

    je voudrais voir le code de ton bouton.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 211
    Par défaut
    bonjour,

    Voila carement mon workbook

    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
     
    Public Sub Workbook_Open()
        Dim CmdBar As CommandBar
        Dim Bouton As CommandBarButton
     
        'Création de la barre d'outils nommée 'MaBarrePerso'
    '    Set CmdBar = Application.CommandBars _
            .Add(Name:="MaBarrePerso", Position:=msoBarTop, Temporary:=True)
     
       Set CmdBar = Application.CommandBars _
            .Add(Name:="MaBarrePerso", Position:=msoBarFloating, Temporary:=True)
     
     
        'Ajout des boutons dans la barre d'outils
        Set Bouton = CmdBar.Controls.Add(Type:=msoControlButton)
        With Bouton
         .Style = msoButtonIconAndCaption '<-- bouton avec icône + texte
        .Caption = "Vérification" '<-- texte du bouton
    '    .PasteFace '<-- collage de l'image issue du presse-papier
     
            'Définit "l'image" qui va s'afficher sur le bouton
            .FaceId = 3623
            'Définit quelle macro est associée au bouton.
            'Cette macro sera lancée à chaque fois que vous cliquez sur le bouton.
            .OnAction = "Comparaison"
        End With
     
        Set Bouton = CmdBar.Controls.Add(Type:=msoControlButton)
        With Bouton
         .Style = msoButtonIconAndCaption '<-- bouton avec icône + texte
        .Caption = "VérificationVraie" '<-- texte du bouton
    '    .PasteFace '<-- collage de l'image issue du presse-papier
     
            'Définit "l'image" qui va s'afficher sur le bouton
            .FaceId = 3623
            'Définit quelle macro est associée au bouton.
            'Cette macro sera lancée à chaque fois que vous cliquez sur le bouton.
            .OnAction = "Comparaison2"
        End With
     
     
    'With ActiveSheet.Pictures.Insert("X:\fadoua\projet\p.bmp") '<-- insertion de l'image
     '   .Name = "Pic2" '<-- attribution d'un nom à l'image
      '  .Copy '<-- copie de l'image dans le presse-papier
    'End With
        Set Bouton = CmdBar.Controls.Add(Type:=msoControlButton)
        With Bouton
            .Style = msoButtonIconAndCaption '<-- bouton avec icône + texte
        .Caption = "Passif" '<-- texte du bouton
    '    .PasteFace '<-- collage de l'image issue du presse-papier
     
            .FaceId = 134
            .OnAction = "Passif"
        End With
    'ActiveSheet.Pictures("Pic2").Delete '<-- suppression de l'image insérée sur la feuille
    'Application.ScreenUpdating = True '<-- réactivation du rafraîchissement de l'écran
     
     
     
    'With ActiveSheet.Pictures.Insert("X:\fadoua\projet\a.jpg") '<-- insertion de l'image
    '    .Name = "Pic3" '<-- attribution d'un nom à l'image
     '   .Copy '<-- copie de l'image dans le presse-papier
    'End With
        Set Bouton = CmdBar.Controls.Add(Type:=msoControlButton)
        With Bouton
        .Style = msoButtonIconAndCaption '<-- bouton avec icône + texte
        .Caption = "Actif" '<-- texte du bouton
     '   .PasteFace '<-- collage de l'image issue du presse-papier
     
             .FaceId = 2810
        .OnAction = "Actif"
        End With
    'ActiveSheet.Pictures("Pic3").Delete '<-- suppression de l'image insérée sur la feuille
    'Application.ScreenUpdating = True '<-- réactivation du rafraîchissement de l'écran
     
     
     
    'With ActiveSheet.Pictures.Insert("X:\fadoua\projet\r.gif") '<-- insertion de l'image
     '   .Name = "Pic4" '<-- attribution d'un nom à l'image
      '  .Copy '<-- copie de l'image dans le presse-papier
    'End With
        Set Bouton = CmdBar.Controls.Add(Type:=msoControlButton)
        With Bouton
        .Style = msoButtonIconAndCaption '<-- bouton avec icône + texte
        .Caption = "Compte résultat" '<-- texte du bouton
     '   .PasteFace '<-- collage de l'image issue du presse-papier
     
             .FaceId = 2810
            .OnAction = "CompteResultat"
        End With
    'ActiveSheet.Pictures("Pic4").Delete '<-- suppression de l'image insérée sur la feuille
    'Application.ScreenUpdating = True '<-- réactivation du rafraîchissement de l'écran
     
     
     
    'With ActiveSheet.Pictures.Insert("X:\fadoua\projet\r.gif") '<-- insertion de l'image
     '   .Name = "Pic5" '<-- attribution d'un nom à l'image
      '  .Copy '<-- copie de l'image dans le presse-papier
    'End With
        Set Bouton = CmdBar.Controls.Add(Type:=msoControlButton)
        With Bouton
        .Style = msoButtonIconAndCaption '<-- bouton avec icône + texte
        .Caption = "La balance" '<-- texte du bouton
    '    .PasteFace '<-- collage de l'image issue du presse-papier
     
             .FaceId = 2810
            .OnAction = "FusionFeuilles"
        End With
    'ActiveSheet.Pictures("Pic5").Delete '<-- suppression de l'image insérée sur la feuille
    'Application.ScreenUpdating = True '<-- réactivation du rafraîchissement de l'écran
     
     
        CmdBar.Visible = True
    End Sub
     
    Public Sub Workbook_BeforeClose(Cancel As Boolean)
        On Error Resume Next
        Application.CommandBars("MaBarrePerso").Delete
    End Sub
    parce que là je trouve même un autre problème de tps en tps un fois ca marche une fois ca bug: dès fois on me dis que c'est impossible de trouver la macro alors qu elle est supplementaire

    Merci d'avance

  4. #4
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Re,

    je suppose donc que le bouton utilisé est celui-ci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        With Bouton
         .Style = msoButtonIconAndCaption '<-- bouton avec icône + texte
        .Caption = "VérificationVraie" '<-- texte du bouton
    '    .PasteFace '<-- collage de l'image issue du presse-papier
     
            'Définit "l'image" qui va s'afficher sur le bouton
            .FaceId = 3623
            'Définit quelle macro est associée au bouton.
            'Cette macro sera lancée à chaque fois que vous cliquez sur le bouton.
            .OnAction = "Comparaison2"
        End With
    peux-tu mettre le module Comparaison2 en debug et quand ca plante me donner l'instruction + les variables (a afficher par exemple fans la fenêtre immédiate).

    Exemple si sa plante sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        totauxA = ThisWorkbook.Sheets("2").Range("H58").Value
    Tu me donnes :
    Thisworkbook.name
    ... hep hep hep : tu es sur que un Sheets du nom "2" existe et pas le sheet n° 2 qui est sheets(2)

    Pour etre sur,
    fais tourner ceci

    for i = 1 to sheets.count
    debug.print sheets(i).name
    next

    et tu me donnes la liste.
    Autrechose, des variables totaux en variant, c'est pas top. Mieux vaut des zones numériques (long, single,...) et éviter le .value

    cette instruction peut-etre donc simplifiée en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        totauxA = ThisWorkbook.Sheets("2").Range("H58")
    je t'atends pour la suite.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 211
    Par défaut
    Bonjour,

    J'espère que t'a passé un agréable week end sinon pour revenir à notre discussion en fait après plusireurs manip j'ai remarqué un problème plus grand: j'avais créé un nouveau classeur Excle ou j'avais aucune macro et ce qui se produit c'est que quand j'appele mes macro sup dans ce nouveau classeur on me dit que c'est Impossible de trouver la macro désirée. est ce que ça veut dire que pour tout nouveau classeur je dois recodé les macro dedans?? et que mes macro sup me permettent juste d'afficher la barre d'outils ou quoi??

    PS: dsl pour le retard mes mon PC commence à me faire des caprices

    amicalement

  6. #6
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Salut Rirourou,

    super week-end merci. festival Couleur-Café à Bxl (génial).


    La syntaxe à utiliser pour .OnAction est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    LeBouton.OnAction = "'" & NomClasseur & "'!" & NomMacro
    Donc un exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    lebouton.OnAction= 'Monfichier.xls'!Comparaison2
    Attention a ne pas oublier les simples quotes.

    Si cela ne répond pas à ta question, continue à lire.



    Pour ta dernière question, est-ce que je comprends bien ton problème quand je dis que tu veux utiliser ta barre d'outil dans/pour un autre fichier excel que celui par lequel elle est créée ?

    Deuxième question : le fichier qui crée la barre d'outil (l'appel fichier du "code", laisse-t'il la barre d'outil permanente ?
    Troisième question : le fichier du code est-il ouvert (actuellement )chaque fois que tu veux utiliser son code ?

    Dernière qu'estion, peut-être simplifiant tout : les macros du fichier code, ainsi que les boutons doivent-ils être utilisables pour chaque fichier excel ?

Discussions similaires

  1. Parser CDT : problème avec les macros
    Par bpy1401 dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 05/01/2010, 07h22
  2. [XL-2003] problème avec les macros vba
    Par jess59 dans le forum Excel
    Réponses: 6
    Dernier message: 27/05/2009, 13h28
  3. [Macro] [Débutant] Problème avec les Indice colonne
    Par BenoitM dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/11/2008, 11h30
  4. Réponses: 2
    Dernier message: 07/08/2008, 08h24
  5. Problème avec les macros _RPT et _RPTF
    Par pikatshu dans le forum C++Builder
    Réponses: 0
    Dernier message: 12/11/2007, 12h31

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