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 :

macro rechermer mot et transposer résultat en colonne [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 73
    Par défaut macro rechermer mot et transposer résultat en colonne
    Allo
    Voici un Exemple du fichier
    En selectionnant un nom avec mon combobox, je veux que la macro cherche le nom dans le tableau adresse et copie toute la ligne.
    le résultat doit être copié en colonne dans la feuille master. Il doit commencer dans la cellule en rouge.
    il faudrait que la feuille soit considérée comme ActiveSheet car je vais copier la macro sur d'autres feuilles.
    Merci pour toute aide.
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je sais que c'est plus amusant de faire des macros mais en utilisant tout simplement la fonction RECHERCHEV tu pourrais placer les informations contenues dans la feuille [Adresse] sur la feuille [Master] et cela en moins de 5 minutes.
    Un petit coup d'oeil sur ce didacticiel à la rubrique Combobox.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Bonjour,

    Essaie ce code (sur le bouton Insérer adresse) :
    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
    Private Sub CommandButton5_Click()
    Const nb As Byte = 4  ' nombre de colonnes qui contiennent l'adresse
    Dim c1 As Range       ' première cellule de l'adresse
    Dim c2 As Range       ' cellule de destination
    DimAs Byte        ' n° de la colonne d'adresse
     
      If ComboBox1.Text = "" Then Exit Sub
      'Chercher l'identifiant sélectionné
      Set c1 = Worksheets("Adresse").Columns("B:B").Find(ComboBox1.Text)
      'Définir la destination de l'adresse
      Set c2 = Worksheets("Master").Range("E6")
      'Effacer la zone de destination de l'adresse
      c2.Resize(nb).ClearContents
      'Explorer chaque cellule de l'adresse
      For n° = 1 To nb
        'Si l'information existe...
        If c1.Offset(, n° - 1).Value <> "" Then
          '... la copier dans la cellule de destination
          c1.Offset(, n° - 1).Copy
          c2.PasteSpecial xlPasteValues
          'définir la cellule de destionation suivante
          Set c2 = c2.Offset(1)
        End If
      Next n°
      Application.CutCopyMode = False
     
    End Sub
    Cordialement
    Patrice

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 73
    Par défaut
    Merci. Il fonctionne nickel

  5. #5
    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
    Bonjour
    Qu'on peut simplifier comme ceci (sans boucle ni copier/coller)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub CommandButton5_Click()
    Dim c As Range                                                       ' première cellule de l'adresse
     
    If ComboBox1.Text <> "" Then
        Set c = Worksheets("Adresse").Range("B:B").Find(ComboBox1.Text, LookIn:=xlValues, lookat:=xlWhole)
        Range("E6:E9").Value = Application.Transpose(c.Resize(1, 4).Value)
        Set c = Nothing
    End If
    End Sub
    Edit:
    Ou bien une autre approche: Travailler avec une Combobox multi colonnes

    Ci après proposition
    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
    Private Sub UserForm_Initialize()                                    'à l'intilisation de l'UserForm
     
    With Me.ComboBox1
        .ColumnCount = 4
        .ColumnWidths = "4;0;0;0"
    End With
    With Sheets("Adresse")
        Me.ComboBox1.List = .Range("B1:E" & .Cells(.Rows.Count, "A").End(xlUp).Row).Value
    End With
    End Sub
     
    Private Sub ComboBox1_Change()
     
    Range("E6:E9").ClearContents
    End Sub
     
    Private Sub CommandButton5_Click()
    Dim i As Byte
     
    With Me.ComboBox1
        If .ListIndex > -1 Then
            For i = 0 To 3
                Range("E" & 6 + i).Value = .List(.ListIndex, i)
            Next i
        End If
    End With
    End Sub

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 73
    Par défaut
    Merci, tout fonctionne aussi avec ce code.

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

Discussions similaires

  1. [Toutes versions] Macro de comparaisons diverses et résultat dans une nouvelle colonne
    Par mitchmutch dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 14/08/2014, 18h47
  2. ne prendre que le premier mot d'un résultat
    Par Empty_body dans le forum Administration système
    Réponses: 2
    Dernier message: 11/06/2007, 20h31
  3. Résultat Ligne -> Colonne
    Par Thony_7 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 30/04/2007, 15h35
  4. Macro VBA Excel : Comparaison des deux 1ères colonnes de 2 fichiers Excel
    Par techneric dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/01/2007, 10h00
  5. Transposer résultat d'une requête
    Par Mus_mus dans le forum Access
    Réponses: 1
    Dernier message: 06/01/2007, 12h49

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