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 :

Créer une macro "répétitive"


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Octobre 2013
    Messages : 46
    Par défaut Créer une macro "répétitive"
    Bonjour à tous,

    j'ai besoin sur un fichier excel de la chose suivante :

    -j'ai deux feuilles (feuille 1 et 2) avec sur chacune d'elles, un tableau quasi identique

    - lorsque je clique sur la cellule A2 de la feuille 1 me retrouver automatiquement dans la cellule A2 de la feuille 2
    Et ceci pour toutes les cellules d'un tableau qui s’étend de la cellule C4:CU127

    J'ai pensé à un bouton de commande affecté d'une macro masi comme vous pouvez l'imaginer la personnalisation de chaque bouton de commande avec une macro différente est assez longue.....


    Existe t il une autre solution? merci pour votre aide

  2. #2
    Membre éclairé
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Septembre 2013
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 51
    Par défaut
    Oui, il te faut écrire macro,
    puis l'appeler dans la section selection change de ta feuille.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    End Sub

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Octobre 2013
    Messages : 46
    Par défaut
    Merci beaucoup pour ta réponse.... mais je suis plutot débutant dans ce type de macro.... peux tu m'expliquer précisément comment faire.... si ce n'est pas trop compliqué... merci infiniment

  4. #4
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut
    Bonjour,
    Ouvres l'éditeur visual Basic
    Dans la partie gauche, double clique Microsoft Excel objets Feuil1
    Dans la partie droite, listbox de gauche, sélectionne Worksheet si ce n'est pas fait par défaut.
    Dans la listBox de droite, sélectionne SelectionChange.

    Et voilà le code de NicolasST sera affiché.
    J'y ajoute une ligne qui exclut toute action si la cellule cliquée est en dehors de la plage.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      If Intersect(Target, Range("C4:CU127")) Is Nothing Then Exit Sub
    Tu peux tester en ajoutant cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox "Clic d'une cellule dans la plage"
    Maintenant, retourne dans ta feuille et tu verras que le message ne s'affiche pas si tu cliques en dehors de la plage.

    Bonne recherche pour la suite.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Octobre 2013
    Messages : 46
    Par défaut
    Merci beaucoup de prendre du temps pour m'aider c'est très sympa
    J'ai suivi tes indictions
    mais lorsque je clique sur une cellule de la plage C4:CU127 j'ai le message "Clic d'une cellule dans la plage" mais je reste sur cette feuille sans changer comme je le souhaite.... j'ai peut-être raté quelque chose?

    merci à vous

  6. #6
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut
    Ah oui, c'est pas avec une seule instruction que tu vas exécuter toute une procédure. Je pensais que cela allait te lancer pour coder les lignes suivantes.

    Alors maintenant que tu as constaté que ce code "agit", tu peux enlever la ligne qui affiche le message et écrire les lignes suivantes qui vont t'ouvrir la feuille 2 et y sélectionner la cellule de même adresse que celle que tu as cliqué dans la feuille 1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      ThisWorkbook.Sheets(2).Select
      Cells(Target.Row, Target.Column).Select
    Je n'ai pas testé parce que je n'ai pas Excel sur ce pc. Mais s'il y a une erreur, elle doit être mineure.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Octobre 2013
    Messages : 46
    Par défaut
    merci beaucoup pour ton aide... bon effectivement étant plutôt novice difficile pour moi de coder... mais je commence à comprendre des choses.... merci

    Petit problème lorsque je clique sur une cellule je bascule bien sur ma feuille 2 mais la macro s’arrête et ne va pas jusqu'à la cellule concernée....
    "Erreur d’exécution '1004' la méthode select de la classe range a échoué"
    en cliquant sur "debogage" s'ouvre la fenêtre VB en surlignant en jaune la partie

    Cells(Target.Row, Target.Column).Selectsi quelqu'un avec excel a une idée....merci en tout cas defluc.... ça avance....

  8. #8
    Expert éminent 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
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    If Intersect(Target, Range("C4:CU127")) Is Nothing Then Exit Sub
    With Worksheets("Feuil2")
        .Activate
        .Range(Target.Address).Select
    End With
    End Sub

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Octobre 2013
    Messages : 46
    Par défaut
    Génial merci à tous pour votre aide , cela fonctionne nickel!

  10. #10
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut
    Si le sujet est clos, clique sur "Résolu".

    A la prochaine

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Octobre 2013
    Messages : 46
    Par défaut
    J'étais en train de faire des essais et modifs par rapport à mon projet et je coince encore un peu

    J'ai intégré le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Intersect(Target, Range("Bateau_1")) Is Nothing Then Exit Sub
    With Worksheets("bateau 1")
        .Activate
        .Range(Target.Address).Select
     
    End With
    End Sub

    "Bateau_1" correspond à une plage de cellule que j'ai nommé
    J'aimerai pouvoir ajouter le fait que si je clique sur une cellule de la plage "bateau_2" soit activée de la même façon la cellule correspondante mais sur la feuille "bateau 2"

    J'ai fait plusieurs essais mais ça coince
    si quelqu'un peut m'aider

    merci par avance

  12. #12
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut
    Ben il suffit d'ajouter une condition pour "Bateau_2"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      If not Intersect(Target, Range("Bateau_1")) Is Nothing then
        With Worksheets("bateau 1")
          .Activate
          .Range(Target.Address).Select
        End With
                                                             else
      If not Intersect(Target, Range("Bateau_2")) Is Nothing then
        With Worksheets("bateau 2")
          .Activate
          .Range(Target.Address).Select
        End With
      endif
    End Sub
    Non testé, je suis sous Linux en ce moment

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Octobre 2013
    Messages : 46
    Par défaut
    Merci à toi j'ai maintenant le message

    blog IF sans End If

  14. #14
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut
    Distraction de ma part.

    Et toi, qui ne le vois pas.

    Voici la source corrigée.
    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
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      If Not Intersect(Target, Range("Bateau_1")) Is Nothing Then
        With Worksheets("bateau 1")
          .Activate
          .Range(Target.Address).Select
        End With
                                                             Else
        If Not Intersect(Target, Range("Bateau_2")) Is Nothing Then
          With Worksheets("bateau 2")
            .Activate
            .Range(Target.Address).Select
          End With
        End If
      End If
    End Sub

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Octobre 2013
    Messages : 46
    Par défaut
    effectivement... merci en tout cas c'est génial j'ai exactement ce que je voulais....
    merci et bonne continuation

  16. #16
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut
    Tu parles d'une bonne continuation, je suis à quelques mois de la quille (Belgicisme peut-être). Enfin pour moi, mes 65 piges, ce sera la retraite. Des tas de projets, si dame faucille m'accorde le temps de les accomplir.
    En âge, t'as certainement plus de chance que moi et je te renvoie donc ton encouragement : "bonne continuation"

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Octobre 2013
    Messages : 46
    Par défaut
    Bon alors j'en profite et abuse avant que tu ne sois à la retraite....!! dans mon projet je voudrais pouvoir ajouter une commande qui permettrait lorsque je clique sur une cellule de feuille1 (par exemple B4) de copier les cellules B5,B6,B7 et les coller dans un tableau situé sur une feuille2 , lancer une impression.

    Et ceci pour un nombre important et répété de cellules .... C4, D4.....
    j'ai commencer à faire avec une macro mais difficile de l'appliquer à toutes mes cellules....

    Y aurait t il un moyen de contourner ce problème...
    merci par avance....

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Octobre 2013
    Messages : 46
    Par défaut
    Merci encore.... j'ai réglé mon problème.... à une prochaine....

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 23/10/2007, 14h56
  2. Créer une macro archivage
    Par Anaelody dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/07/2007, 16h14
  3. Réponses: 8
    Dernier message: 09/01/2007, 16h30

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