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 :

Un petit coup de main pour un code [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé Avatar de Dav1961
    Homme Profil pro
    Futur retraité
    Inscrit en
    Septembre 2022
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Futur retraité

    Informations forums :
    Inscription : Septembre 2022
    Messages : 132
    Par défaut Un petit coup de main pour un code
    Bonsoir le forum,

    Je viens vers vous afin de vous demander si vous pouvez m'aider pour un petit bout de code.
    Je cherche à écrire ceci :

    si je clique sur une cellule de la plage D8:J13 de la feuille active, alors la VALEUR de la cellule se trouvant dans la plage en colonne B de la même
    ligne doit être copiée vers la cellule G1 de la feuille "Agenda".

    Par exemple : Je clique sur la cellule G9 alors la valeur de la cellule B9 doit être copiée en G1 de la feuille "Agenda".
    Je vous remercie par avance pour l'attention que vous porterez à ma demande.

  2. #2
    Membre confirmé Avatar de Dav1961
    Homme Profil pro
    Futur retraité
    Inscrit en
    Septembre 2022
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Futur retraité

    Informations forums :
    Inscription : Septembre 2022
    Messages : 132
    Par défaut
    J'ai essayé avec ce code mais ça ne fonctionne pas au niveau de la ligne "Range"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Count > 1 Then Exit Sub
        If Application.Intersect(Target, Range("D8:J13")) Is Nothing Then Exit Sub
        Range.["Agenda!G1"].Value = Target.Offset(0, 1).Value
    End Sub

  3. #3
    Membre confirmé Avatar de Dav1961
    Homme Profil pro
    Futur retraité
    Inscrit en
    Septembre 2022
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Futur retraité

    Informations forums :
    Inscription : Septembre 2022
    Messages : 132
    Par défaut
    Ce code fonctionne, mais avec clic droit, j'aurais préféré avec un simple clic, comment faire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    Dim Cell As Object
        For Each Cell In Range("B8:B13")
            Sheets("Agenda").Range("G1").Value = ActiveCell.Value
        Next Cell
        Cancel = True
    End Sub

  4. #4
    Membre confirmé Avatar de Dav1961
    Homme Profil pro
    Futur retraité
    Inscrit en
    Septembre 2022
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Futur retraité

    Informations forums :
    Inscription : Septembre 2022
    Messages : 132
    Par défaut
    C'est bon j'ai trouvé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim cell As Object
    Application.ScreenUpdating = False
     
         For Each cell In Range("B8:B13")
            Sheets("Agenda").Range("G1").Value = ActiveCell.Value
        Next cell
        Cancel = True
     
    End Sub

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour et bravo pour ce monologue

    Comme quoi poser la question étais très utile

  6. #6
    Membre confirmé Avatar de Dav1961
    Homme Profil pro
    Futur retraité
    Inscrit en
    Septembre 2022
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Futur retraité

    Informations forums :
    Inscription : Septembre 2022
    Messages : 132
    Par défaut
    Bonjour le forum, bonjour BrunoM45,

    Merci pour votre commentaire, toutefois à la base ce n'est pas tout à fait ce que je cherchais à faire.
    Je souhaitais cliquer sur une cellule, par exemple la cellule G9 alors la valeur de la cellule B9 doit être copiée en G1 de la feuille "Agenda".
    Alors que là je clique directement en B9 ce n'est pas tout à fait la même chose.
    La finalité du code est que lorsque je clique dans une cellule de la plage B8:B13, que la valeur de la colonne B soit dans G1 et qu'ensuite le curseur se positionne sur la valeur correspondant à la cellule que j'ai cliqué.
    Je clique B9 - Affiche B9 en G1 de la feuille "Agenda" - Se positionne sur l'équivalence de B9 dans la feuille "Agenda"

    Je mets mon fichier en pièce jointe
    CalendAgenda.xlsm

  7. #7
    Membre émérite
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Par défaut
    Bonjour,

    jeté un oeil à ton code...
    1. pense à ajouter un option explicit
    2. utilise des constantes pour tous tes littéraux, et de préférence des plages nommées
    3. comme tu es dans le module de classe de la feuille tu peux utiliser Me au lieu de sheets("agenda")
    4. la boucle sur each cell ne sert à rien puisque cell n'est pas utilisé dedans (tu fais n fois la même affectation).

    Moyennant quoi il devrait rester, si j'ai bien compris la demande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Option Explicit
    Const RgCalendrier = "D8:J13"
    Const ColSemaine = 2
    Const RgSemaine = "G1"
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count = 1 Then
        If Not Intersect(Target, Me.Range(RgCalendrier)) Is Nothing Then
            Me.Range(RgSemaine).Value = Target.EntireRow.Cells(ColSemaine).Value
        End If
    End If
    End Sub
    Reste à nommer les plages

  8. #8
    Membre confirmé Avatar de Dav1961
    Homme Profil pro
    Futur retraité
    Inscrit en
    Septembre 2022
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Futur retraité

    Informations forums :
    Inscription : Septembre 2022
    Messages : 132
    Par défaut
    Bonjour Tête de chat,

    Merci beaucoup pour ta participation.
    Je teste le code et je reviens.

  9. #9
    Membre confirmé Avatar de Dav1961
    Homme Profil pro
    Futur retraité
    Inscrit en
    Septembre 2022
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Futur retraité

    Informations forums :
    Inscription : Septembre 2022
    Messages : 132
    Par défaut
    J'ai installé le code, nommé les plages mais ça ne fonctionne pas.
    Peut-être ai-je commis une erreur

    CalendAgenda.xlsm

  10. #10
    Membre émérite Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 517
    Par défaut
    Salut,
    au meilleur sans tarabiscoter c'est avec un double clic.
    Code à mettre dans toutes les feuilles où tu as besoin de récupérer la valeur de B1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)    If Not Intersect(Target, Range("D8:J13")) Is Nothing Then
            Worksheets("Agenda").Range("G1").Value = CInt(ActiveSheet.Range("B" & Target.Row).Value)
            'Cancel = True  ' // Seulement si besoin dans ton code...
        End If
    End Sub
    Ne pas oublier de passer la cellule G1 de la feuille Agenda au format nombre.

  11. #11
    Membre confirmé Avatar de Dav1961
    Homme Profil pro
    Futur retraité
    Inscrit en
    Septembre 2022
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Futur retraité

    Informations forums :
    Inscription : Septembre 2022
    Messages : 132
    Par défaut
    Bonjour Valtrase,

    Désolé d'avoir tardé à répondre. Tout d'abord merci pour votre contribution.
    J'ai installé votre code et ça fonctionne. Je vais y ajouter quelques bricoles dont j'ai besoin.
    Encore merci.

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

Discussions similaires

  1. Petit coup de main pour une meilleur compréhension
    Par b_sky dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 22/06/2011, 18h51
  2. Petit coup de main pour un petit script
    Par Baradhur dans le forum Linux
    Réponses: 4
    Dernier message: 11/11/2010, 00h38
  3. Petit coup de main pour débuter
    Par Wil14 dans le forum JPA
    Réponses: 2
    Dernier message: 14/04/2010, 11h32
  4. Petit coup de main pour syntaxe
    Par santacrus dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 26/12/2008, 20h11

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