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 :

recherche valeur dans matrice


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    jeanlucmartin
    Inscrit en
    Avril 2009
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : jeanlucmartin

    Informations forums :
    Inscription : Avril 2009
    Messages : 101
    Par défaut recherche valeur dans matrice
    Bonjour le forum
    une aide pour un nul serait la bienvenue

    Dans un userform j'ai un combobox avec une liste de nom
    je veux aller chercher dans une autre feuill dans un tableau (nommé liste_nom_virement) , première colonne
    le nom de la personne et récupérer l'information de la cellule de droite pour mettre dans un texbox.
    En espérant avoir été clair

    es ce possible en code VBA sans ouvrir la feuill ou se trouve ma matrice (nommé liste_nom_virement)
    si vous pouvez m'aiguiller pour le code merci d'avance

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    c'est bien sûr assez simple à mettre en oeuvre.
    Plusieurs pistes sont possibles, mais cela dépend de ton contexte

    Intéressons-nous déjà à ton combobox. Comment est-il alimenté ?

    Nous montrer ton code rattaché au userform aiderait grandement à t'orienter sur possibilité optimisée

  3. #3
    Membre confirmé
    Homme Profil pro
    jeanlucmartin
    Inscrit en
    Avril 2009
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : jeanlucmartin

    Informations forums :
    Inscription : Avril 2009
    Messages : 101
    Par défaut
    Bonsoir

    voici mon code pour alimenter mon combobox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.C1.List = Application.Transpose([liste_nom_virement])
    liste_nom_ virement étant le nom de la plage de la première colonne de ma matrice
    en espérant avoir répondu
    erci

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Tu peux tout simplement réutiliser cette plage nommée pour obtenir la cellule d'à côté
    En utilisant la position de l'élément choisi dans le combobox (le .ListIndex) on repère la cellule de la plage nommée dans la feuille de calcul.

    ça devrait ressembler à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub C1_Change()
        With Me.C1
            If .ListIndex <> -1 Then mavaleur = Range("liste_nom_virement").Cells(.ListIndex + 1, 2).Value
            MsgBox mavaleur
        End With
    End Sub
    Je te conseille d'ajouter le nom de la feuille dans le Range de ta plage nommée

  5. #5
    Membre confirmé
    Homme Profil pro
    jeanlucmartin
    Inscrit en
    Avril 2009
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : jeanlucmartin

    Informations forums :
    Inscription : Avril 2009
    Messages : 101
    Par défaut
    merci
    ma feuille ou se trouve la matrice s'appelle virement_2017 utilisant ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Worksheet_Activate()
    ActiveSheet.Name = "Virement" & "_" & [année]
    end sub
    Au lieu d'avoir un boite de dialogue qui s'ouvre je voudrait renvoyer le résultat dans un texbox
    merci

    Je tente ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub C1_Change()
     With Me.C1
           If .ListIndex <> -1 Then mavaleur = Range("liste_nom_virement").Cells(.ListIndex + 1, 2).Value
     
          mavaleur2 = Range("liste_nom_virement").Cells(.ListIndex + 1, 3).Value
      Me.N2 = mavaleur
      Me.N3 = mavaleur2
      Me.N2 = Format(Me.N2, "# ##0.00 €")
        Me.N3 = Format(Me.N3, "# ##0.00 €")
        End With
    End Sub
    ça fonctionne mais ce n'est peut etre pas l'ideal ?
    merci

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Si tu as plusieurs données à rapatrier, ça peut être stratégique de revoir légèrement la méthode

    par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub C1_Change()
        If Me.C1.ListIndex <> -1 Then
            With Range("liste_nom_virement").Cells(Me.C1.ListIndex + 1, 1)
                Me.N2.Text = Format(.Offset(0, 1).Value, "# ##0.00 €")
                Me.N3.Text = Format(.Offset(0, 2).Value, "# ##0.00 €")
            End With
        End If
    End Sub
    Là tu as en plus une meilleure lisibilité de tes décalages, et transformer ça en boucle est plus intuitif (si tu as des dizaines de textbox par exemple)
    Et il est inutile de passer par des variables intermédiaires ou d'écrire un résultat et d'ensuite le formater. Autant tout faire en même temps

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

Discussions similaires

  1. [XL-2003] Recherche valeur dans une table ou matrice.
    Par sevy1 dans le forum Excel
    Réponses: 9
    Dernier message: 03/01/2012, 16h39
  2. recherche valeur dans fichier fermé
    Par afssaLERH dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 12/02/2008, 12h06
  3. Recherche valeurs dans tableau par Vlookup
    Par fabibou dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 22/08/2007, 11h51
  4. Recherche valeur dans table Access
    Par Stefloulou dans le forum Access
    Réponses: 1
    Dernier message: 05/11/2005, 08h45
  5. [Tableaux] Recherche valeur dans tableaux
    Par Kaimann dans le forum Langage
    Réponses: 10
    Dernier message: 21/10/2005, 11h57

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