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 :

Configurer un bouton avec une macro


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Configurer un bouton avec une macro
    Bonjour,


    J'ai un problème de configuration du bouton pour le lancement de ma macro.
    Je n'arrive pas à configurer mon bouton pour qu'il appelle la macro. Finalement, je contourne le problème en collant la macro et la faisant précéder de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Macro1_Click()
    Pb: quand je clique sur mon bouton, j'ai un message d'erreur type fin ou debogage

    Si je le fais en pas à pas j'ai ce message d'erreur au tout début:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sheets("All Updated Trades Month").Select
    Cells.Select
    Selection.ClearContents
    Erreur d'exécution '1004'
    Erreur définie par l'application ou par l'objet
    Merci pour votre aide.

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonjour
    sans rien sélectionner, essaies ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("All Updated Trades Month").UsedRange.ClearContents
    Ps: tu efface seulement la zone utile

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci pour ta réponse

    J'ai essayé ta solution et elle fonctionne en pas à pas (Mon ancien code également)

    Le problème survient lorsque je veux créer mon bouton pour lancer ma macro. Même avec ta solution, j'ai eu le même message un peu plus dans mon code

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Attends
    Tu ajoute un bouton de commande ActiveX
    Tu y clique droit > Visualiser le code

    Le résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub CommandButton1_Click()
     
    Sheets("All Updated Trades Month").UsedRange.ClearContents
    End Sub

    Sinon, une autre possibilité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Macro1()
     
    Sheets("All Updated Trades Month").UsedRange.ClearContents
    End Sub
     
    Private Sub CommandButton1_Click()
     
    Call Macro1
    End Sub

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci j'ai essayé comme tu m'as dit.

    Effectivement, ça fonctionne pour la partie que j'ai donné mais j'ai l'impression que dès que je lui demande de sélectionner des cellules ou une cellule, ça plante. Du coup, je suis bloqué un peu plus loin dans ma macro et comme je demande souvent de sélectionner une cellule, j'ai peur que toute la macro soit à refaire.

    Encore une fois, je ne rencontre pas ce problème quand je fais tourner la macro sans le bouton, mais bon je me vois pas faire du pas à pas pour sortir mes résultats, je vais finir par remplacer la touche ;-)))

  6. #6
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Je réitère
    Tu n'as pas besoin de sélectionner une plage de cellules pour travailler avec.
    Regarde le code, tu comprendra que tu peux travailler directement sur une plage en prenant soin d'indiquer à quelle feuille elle appartient.

    Exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Feuil3").Range("C7").Value=36
    Cette ligne, permet d'écrire 36 dans C7 de Feuil3.

    PS: Si tu travailles avec plusieurs classeurs, il faut aussi indiquer le classeur.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Ok je comprends bien dans ce cas mais j'ai besoin de sélectionner la plage pour la copier puis la coller dans un autre onglet. C'est pour ça que j'ai besoin de sélectionner.

    En fait, je mets un filtre. Ensuite j'ai besoin de sélectionner la plage puis de la copier dans un autre onglet.
    Puis je dois ajouter un commentaire dans la colonne AG pour toute les lignes.

    Ensuite, je réitère avec un autre filtre, mais les lignes sont à mettre dans le même onglet à la suite (et je repasse par le même code)

    Voici un exemple de code:

    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
        Sheets("Updated Trades Month").Select
        ActiveSheet.ShowAllData
        Selection.AutoFilter Field:=6, Criteria1:="=*init*", Operator:=xlAnd
        Range("A1").Select
        Range(Selection, Selection.End(xlDown)).Select
        Range(Selection, Selection.End(xlToRight)).Select
        Selection.Copy
        Sheets("All Updated Trades Month").Select
        Range("A1").Select
        ActiveSheet.Paste
        Selection.AutoFilter Field:=32, Criteria1:="<>", Operator:=xlAnd
        Sheets("Updated Trades Month").Select
        Range("BA2").Select
        Selection.Copy
        Sheets("All Updated Trades Month").Select
        Range("AG2:AG65536").SpecialCells(xlVisible).Select
        ActiveSheet.Paste
        ActiveSheet.ShowAllData
     
    'filtre suivant
     
       Sheets("Updated Trades Month").Select
        ActiveSheet.ShowAllData
        Selection.AutoFilter Field:=7, Criteria1:="=*init*", Operator:=xlAnd
        Range("A2:AZ65536").SpecialCells(xlVisible).Copy
        Sheets("All Updated Trades Month").Select
        Range("A65536").End(xlUp).Offset(1, 0).Cells.Select
        ActiveSheet.Paste
        Selection.AutoFilter Field:=32, Criteria1:="<>", Operator:=xlAnd
        Selection.AutoFilter Field:=33, Criteria1:="", Operator:=xlAnd
        Sheets("Updated Trades Month").Select
        Range("BA3").Select
        Selection.Copy
        Sheets("All Updated Trades Month").Select
        Range("AG2:AG65536").SpecialCells(xlVisible).Select
        ActiveSheet.Paste
        ActiveSheet.ShowAllData

  8. #8
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Regarde ce petit exemple, je n'ai rien sélectionné (à adapter)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Copie1()
    Dim LastLig As Long
     
    Application.ScreenUpdating = False
    With Sheets("Updated Trades Month")
        .AutoFilterMode = False
        LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row    'Ligne de la dernière cellule remplie de colonne A' à adapter
        .Range("A1:F" & LastLig).AutoFilter Field:=6, Criteria1:="=*init*"
        .Range("A1:F" & LastLig).SpecialCells(xlCellTypeVisible).Copy Sheets("All Updated Trades Month").Range("A1")
        .AutoFilterMode = False
    End With
    End Sub

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Effectivemnt mon code est lourd mais ce que je comprends pas c'est que la mise en place d'un bouton plante la macro.

    N'y a-t-il pas un moyen sans avoir à tout réécrire?

  10. #10
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Mais relis soigneusement ce qu'on t'écris.
    J'avais répondu à cette question avec des exemples.

    Tu ne peux pas écrire MaMacro_Click que si tu as un CommandButon (Bouton de commande ActiveX) qui s'appelle MaMacro

Discussions similaires

  1. [XL-2003] Ajouter un bouton au menu standard avec une macro
    Par loulag07 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/08/2012, 06h47
  2. créer dans excel un bouton avec une macro personnalisée
    Par deubelte dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/11/2008, 16h01
  3. [Excel]Faire une somme avec une macro
    Par Chlo dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 13/01/2006, 19h53
  4. Connaître la taille d'un module avec une macro VBA ou autre
    Par beegees dans le forum Général VBA
    Réponses: 15
    Dernier message: 22/11/2005, 09h47
  5. [VBA Excel] ecrire le caractere " avec une macro
    Par oktopuces dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/09/2005, 22h56

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