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 :

Bouton active x - Macro qui recherche et copie les données de la ligne sur laquelle il se trouve


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2015
    Messages : 6
    Par défaut Bouton active x - Macro qui recherche et copie les données de la ligne sur laquelle il se trouve
    Bonjour à tous et toutes,

    Je vous sollicite concernant du code sur lequel je sèche sévèrement.

    Je vous ai joint le code de la macro en question.

    J'ai un tableau excel d'Analyse de chantiers et tout plein de chantier les uns en dessous des autres. Au bout de chaque ligne de chaque chantier j'ai un bouton active X qui ouvre une autre feuille excel.

    Après pas mal de recherche je n'ai pas trouvé le code me permettant de copier la ligne des données sur laquelle se situe le bouton active X.

    En lieu et place de .Range("J18:W18).Copy je voudrais que les lignes J18 à W18 se renseignent en fonction de l'endroit où se situe mon bouton active x.

    Le but par la suite étant de copier/coller le bouton qui sera affecté à ma macro.

    Pourriez-vous m'aiguiller s'il vous plaît?

    'Copie des données des cellules J18 à W18 de la feuille Analyse_Chantiers
    Workbooks("Analyse_Chantiers.xls").Sheets("Analyse_Chantiers").Range("J18:W18").Copy

    Voici le code complet si ça peut vous aider.

    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
    Private Sub CommandButton1_Click()
        Range("I17:I20000").Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
        Range("B17").Select
    'Ouverture du fichier de destination
    Workbooks.Open ThisWorkbook.Path & "\Core\Details_Chantiers.xls"
    'Collage, dans le fichier de destination, sur la première ligne
    Sheets("Details_Chantiers").Range("A1:Z1").Clear
    'Copie des données des cellules J18 à W18 de la feuille Analyse_Chantiers
    Workbooks("Analyse_Chantiers.xls").Sheets("Analyse_Chantiers").Range("J18:W18").Copy
    Workbooks("Details_Chantiers.xls").Sheets("Details_Chantiers").Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    Application.CutCopyMode = False
    End Sub
    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Pourquoi mettre un bouton sur chaque ligne ? Ce doit être très fastidieux de maintenir votre outil. Vous pourriez vous affranchir des boutons avec un événement du type BeforeRightClick comme ci-dessous.

    Dans cet exemple, l'événement se déclenche sur clic droit sur la colonne I. Il faut également vérifier que le fichier destination n'est pas déjà ouvert.

    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
     
     
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
     
    Dim AireACopier As Range
    Dim Continuer As Boolean
    Dim Wb As Workbook
     
        If Not Intersect(Target, Columns(9)) Is Nothing Then
            With ActiveSheet
                 Set AireACopier = .Range(.Cells(Target.Row, 10), .Cells(Target.Row, 23))
            End With
     
            Continuer = True
            For Each Wb In Workbooks
                Select Case Wb.Name
                       Case "Details_Chantiers.xls"
                        Wb.Activate
                        Continuer = False
                        Exit For
                End Select
            Next Wb
     
            If Continuer = True Then Workbooks.Open ThisWorkbook.Path & "\Core\Details_Chantiers.xls"
     
            Sheets("Details_Chantiers").Range("A1:Z1").ClearContents
            AireACopier.Copy Destination:=Sheets("Details_Chantiers").Range("A1")
     
            Set AireACopier = Nothing
     
        End If
     
    End Sub
    Cordialement.

  3. #3
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2015
    Messages : 6
    Par défaut
    Bonjour,

    Merci pour ce retour.

    Cependant, impossible à exécuter la macro, je ne pige pas là :\

    Ca m'ouvre la boite de dialogue pour nommer la macro, comme si j'en créée une.

    Première fois que je rencontre ce problème.Problème.docx

    je vous ai joint un screen.

    Merci beaucoup

  4. #4
    Invité
    Invité(e)
    Par défaut
    Cette procédure est à mettre dans le module de votre onglet Analyse_Chantier. Il n'y a pas besoin de la lier aux boutons, elle se suffit à elle-même.
    Une fois cette procédure installée, il suffit de faire un clic droit sur une cellule de la colonne I dans votre tableau pour enclencher la procédure.

    Cordialement.

  5. #5
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2015
    Messages : 6
    Par défaut
    C'est ce que j'ai fait, du coup j'ai refermé le classeur et ouvert de nouveau et là miracle ça fonctionne. Des fois il ne faut pas chercher à comprendre.

    C'est une tuerie!! Ca me contourne pas mal de problèmes et notamment la lourdeur des boutons en formulaire ou active X.

    J'ai rajouté un petit Cancel = True avant les dim pour que les options du clic droit n'apparaissent pas après ouverture du second fichier.

    Du coup c'est parfait, merci de m'avoir appris tout cela.

    Bien à vous et bonne continuation.

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

Discussions similaires

  1. [XL-2010] Optimisation d'une macro de recherche et copie
    Par alcalis16 dans le forum Excel
    Réponses: 5
    Dernier message: 09/07/2015, 10h00
  2. [XL-2013] Aide pour macro de recherche et copie de lignes entière en utilisant un dictionnaire
    Par magicsismic dans le forum Macros et VBA Excel
    Réponses: 25
    Dernier message: 06/04/2015, 13h43
  3. [XL-2010] Macro qui recherche par mot clé
    Par Adrien13 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/10/2011, 16h38
  4. Réponses: 1
    Dernier message: 18/09/2009, 19h37
  5. [XL-2007] Macro de recherche et copie de fichier
    Par vibos dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 15/06/2009, 15h21

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