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 :

Copie incrémentée d'un bouton.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 6
    Par défaut Copie incrémentée d'un bouton.
    Bonsoir,

    Je débute, et pour comprendre un peu comment fonctionnent les macros, j'ai enregistré une macro, que j'ai ensuite affectée à un bouton.

    Mai je butte sur la suite:
    Soit mon tabeau de 18 lignes. J'ai un bouton par ligne. Ma macro est affectée au bouton 1, comment faire pour l'affecter aux boutons 2 à 18, de façon incrémentée, c'est à dire que la macro du bouton 2 commande les cellules de la ligne 2, etc...?

    J'ai cherché sur le site, mais rien ne m'a semblé correspondre à ma situation, pourtant, cela doit être la base...!

    Je vous remercie par avance pur vos réponses.

  2. #2
    Expert confirmé
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Par défaut
    Pour utiliser la ligne courante et la colonne courante, il suffit de travailler en mode relatif c'est-à-dire ne pas indiquer des valeurs de cellule en dur (type A$2$). Tu peux aussi récupérer le n° de ligne et de la colonne où se situe le curseur, via une commande VBA.

  3. #3
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    18 boutons pour lancer une macro par ligne ? Peux tu un peu expliquer ce que tu fais et ce que tu souhaites obtenir ? Il est peut être possible de simplifier.

    Concernant l'incrémentation des boutons, il n'y a pas vraiment d'alternative que d'attribuer une commande à exécuter lors de l'évènement Click de chaque bouton et ceci bouton par bouton.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 6
    Par défaut
    Bonjour,

    Il s'agit d'une liste de quinze personnes, et du suivi de leurs consultations ophtalmologique:

    Ligne 7:

    -E7: Date de la dernière consultation.
    -F7: Date théorique de la prochaine consult.: E7+365 (1 contrôle/an)
    -G7: Date du RDV pris.
    - I7: Bouton de mise à jour.

    Lorsque le RDV a été honnoré, G7 doit venir remplacer E7. C'est la fonction de la macro.

    Et ainsi de suite sur les 15 lignes.

    J'avais pensé à 1 bouton qui ferait toutes les mises à jour, mais la situation de chaque personne dans le tableau est différente. Les MàJ doivent se faire individuellement.
    La solution, pour un bouton unique, serait d'inclure, dans la macro, une formule conditionnelle du genre:

    "J'appuie sur le bouton mais seules les lignes 7 à 39 dont les cellules G7 à G39 (*) sont remplies seraient concernées par le modif."

    Ce serait plus simple et rationel, mais je ne sais pas faire. Je débute complètement!

    Merci pour votre aide.

    *: G39 parce que j'ai un interligne entre chaque ligne du tableau.

  5. #5
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Oui cela est tout à fait réalisable avec un seul bouton mais selon moi la condition ne devrait pas être "si G7 à G39 sont remplies" vu que ces cellules contiennent les dates de rdv.
    La condition devrait plutot être "si le rdv a été honoré", il y a t'il quelque chose qui signale si le rdv a été honoré ou non ?

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    +1
    C'est même réalisable sans bouton, en plaçant le code dans Worksheet_Selection change, avec un message d'avertissement "Rendez-vous honoré, remplacer la date de dernière consultation" (Oui/non)
    Un clic sur la ligne, une question et c'est tout bon.
    Sans bouton, ça te dirait ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      A		  B	C	   D		   E		   F				G
    Civilité	Nom	Prénom	Téléphone	Date	 Date théorique de la prochaine consult	Date du RDV pris
    Monsieur	Untel	Jules			27/10/2007	26/10/2008	
    Madame		Martin	Juliette		02/02/2008	01/02/2009	
    Mademoiselle	Dupond	Lucie			07/04/2008	07/04/2009	
    Monsieur	Dubois	Raoul			10/03/2008	10/03/2009
    Le code à placer dans la feuille de code de la feuille de calculs -> Menu Outils -> Macros -> Visual Basic Editor -> Deux clics sur le nom de la feuille -> Coller ce code
    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 InStr(Target.Address, ":") <> 0 Then Exit Sub
        If Target = "" Then Exit Sub
        If MsgBox("Rendez-vous de " & Cells(Target.Row, 1) & " " & _
           Cells(Target.Row, 3) & " " & Cells(Target.Row, 2) & " honoré," & vbCr & _
           " remplacer la date de dernière consultation", vbYesNo, "RV Honoré") = vbYes Then _
            Cells(Target.Row, 5) = Cells(Target.Row, 6)
    End Sub
    Juste en passant

Discussions similaires

  1. Bouton pour incrémenter ou décrémenter..
    Par MJEFF dans le forum Access
    Réponses: 6
    Dernier message: 23/05/2016, 14h57
  2. [XL-2007] copie" incrémentée d'une ligne sur 2"
    Par elz064 dans le forum Excel
    Réponses: 3
    Dernier message: 27/02/2014, 15h10
  3. [XL-2007] Erreur de copie incrémentée
    Par mondanikoffi dans le forum Excel
    Réponses: 3
    Dernier message: 16/10/2011, 23h01
  4. [XL-2003] Copie incrémentée automatique
    Par Berquin dans le forum Excel
    Réponses: 6
    Dernier message: 30/01/2011, 18h09
  5. copie incrémentée du n° de feuille
    Par alcabk dans le forum Excel
    Réponses: 2
    Dernier message: 29/03/2007, 09h37

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