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 :

Récupération de valeurs [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 12
    Par défaut Récupération de valeurs
    Bonsoir,

    Après de vains essais, je m'en remets à vous.

    Dans une combobox (ou une listebox), je veux pouvoir récupérer toutes les valeurs des cellules non vides d'une ligne (ex: ligne 2) à partir d'une colonne spécifique (ex : colonne B).

    A ce premier points, j'ai déjà des difficultés. Et la suite est plus compliquée.

    Sur cette ligne, chaque valeur est espacé de 3 colonnes car en dessous, j'ai 3 variables correspondantes.

    Si on appelle une valeur de la deuxième ligne (ex A), je veux pouvoir appeler une variable (Condition 2) dans la colonne 2 en fonction d'une autre variable (Condition 1) en dessous de A.

    Et qui plus est, j'ai des intervalles. La condition 1 fonctionne de 9 à 15, de 16 à 22 ...


    A B
    Condtion 1 Condtion 2 Condtion 3 Condtion 1 Condtion 2 Condtion 3
    9 0.99 200 9,1 0.87 250
    15 0.84 180 14.2 0.79 190
    30 0.69 260 36 0.84 250

    Pour reprendre :

    1/ Les entêtes A, B ... s'affichent dans un premier menu déroulant.
    2/ De la, un second menu déroulant apparaît avec toutes les valeurs de Condition 1 correspondantes à l'entête. Je vais en mettre une par défaut, mais je pense que la distinction défaut/ sélectionnée se fera avec une optionbox est un If.
    3/ Une fois la Condition 1 sélectionnée, il faut que le logiciel récupère la Condition 2 à la droite de la Condition 1.
    4/ Et enfin, j'ai besoin un peu plus tard de la Condition 3

    Donc en fonction de l'entête (qui est renseignée) et de la Condition 1 (qui est aussi renseignée), excel enregistre la Condition 2 selon une variable (ex condition2) et la Condition 3 (ex condition3).

    Dans le but de faire une simple multiplication et d'afficher ces valeurs dans une textbox pour enfin, pouvoir enregistrer certains objets de mon UserForm dans une autre feuille Excel.

    J'espère avoir été clair.

    En vous remerciant et comptant sur votre diligence.

    Cordialement,
    Arnaud

    [ Edit : Merci de m'avoir signalé mon erreur ]

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Citation Envoyé par ArnaudYes Voir le message
    Bonsoir,

    Je vous mets le fichier en pièce jointe.

    Arnaud
    Vite, vite, une grève des réponses.


    Pourquoi, une grève des réponses.

  3. #3
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour,

    Si le premier post n'en restait qu'à la citation du post de clementmarcotte, alors le est bienvenu !

    En revanche, je félicite la nouvelle expression du besoin !

    Cependant, je n'ai pas tout compris...
    Que souhaites-tu faire exactement ?
    Pour reprendre ton exemple :
    1. Récupération de "A", "B", etc... dans un menu déroulant ?
    2. En fonction de la précédente sélection, récupérer "Condtion 1", "Condtion 2", "Condtion 3" dans un autre menu déroulant ?
    3. Après ?
    N'hésite pas à préciser d'avantage avec l'exemple fourni qui permet de visualiser clairement, à mon sens, le résultat souhaité.

    Cordialement,
    Kimy

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 12
    Par défaut
    Merci Kimy_Ire,

    j'ai donc "amélioré" mon premier post afin que les explications soient simples et précises. Je précise juste qu'il peut y avoir par exemple 100 entêtes et donc 300 colonnes et 500 lignes.

    Merci d'avance. Cordialement,
    Arnaud

  5. #5
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour ArnaudYes,

    Voici dans un premier temps le code que je te propose :
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Option Explicit
     
    Private Sub UserForm_Initialize()
    Dim i As Integer
    Dim oRng As Range
     
    With Worksheets("ArnaudYes")
        Set oRng = .Range("A1")
        For i = 0 To .Rows(1).Find("*", , , , , xlPrevious).Column
            If oRng.Offset(0, i) <> "" Then
                Me.ComboBox1.AddItem oRng.Offset(0, i)
            End If
        Next i
    End With
    Me.ComboBox1.ListIndex = -1
    End Sub
     
    Private Sub ComboBox1_Change()
    Dim oRng As Range
    Dim i As Integer
     
    Me.ComboBox2.Clear
    With Worksheets("ArnaudYes")
        Set oRng = .Rows(1).Find(Me.ComboBox1.Value, LookIn:=xlValues, LookAt:=xlWhole)
        'If Not oRng Is Nothing Then
            For i = 2 To .Columns(oRng.Column).Find("*", , , , , xlPrevious).Row - 1
                If oRng.Offset(i, 0) <> "" Then
                    Me.ComboBox2.AddItem oRng.Offset(i, 0)
                End If
            Next i
        'End If
    End With
     
    End Sub
     
    Private Sub ComboBox2_Change()
    Dim oRng As Range
     
    With Worksheets("ArnaudYes")
        Set oRng = .Rows(1).Find(Me.ComboBox1.Value, LookIn:=xlValues, LookAt:=xlWhole)
        Set oRng = .Columns(oRng.Column).Find(Me.ComboBox2.Value, LookIn:=xlValues, LookAt:=xlWhole)
        Me.TextBox1.Value = oRng.Offset(0, 1)
    End With
     
    End Sub
    J'ai créé un UserForm avec 2 ComboBox et 1 TextBox.
    La première ComboBox récupère tes A, B, etc...
    Au moment de la sélection de l'un des éléments de la première ComboBox, la seconde se remplit avec l'ensemble des Condition1.
    Lorsque tu sélectionnes l'un des éléments de la seconde ComboBox, la ListBox affiche la Condition2 correspondante.

    Voila, n'hésite pas à revenir vers moi !

    Cordialement,
    Kimy

    [EDIT : Je viens de m’apercevoir qu'il ne faut pas qu'il y est deux fois le même élément au sein d'une colonne pour que mon code fonctionne correctement. Dans le cas contraire, la Condition2 correspondante sera la première trouvée. Ceci est-il donc fonctionnellement possible ?]

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 12
    Par défaut
    @ Kimy_Ire : Merci beaucoup !!!

    C'est exactement ça ! Je l'ai légèrement modifié pour qu'il corresponde à mon tableau.

    J'ai rajouté la troisième colonne pour une autre TextBox en changeant la valeur de l'Offset.
    Ensuite j'ai modifié certaines valeurs car mon tableau n'est pas en A1.

    Puis j'ai récupéré les variables pour faire un calcul et ça marche impec !

    Je te remercie beaucoup !

    Je mets le post en résolu.

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 12
    Par défaut
    Bonjour,

    Je viens de m'apercevoir que la fonction ne fonctionne pas lorsqu'un nombre possède un séparateur décimales.

    Que le format soit avec un point ou une virgule.

    Ca bloque à ce niveau là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Worksheets("ArnaudYes")
        Set oRng = .Rows(1).Find(Me.ComboBox1.Value, LookIn:=xlValues, LookAt:=xlWhole)
        Set oRng = .Columns(oRng.Column).Find(Me.ComboBox2.Value, LookIn:=xlValues, LookAt:=xlWhole)
        Me.TextBox1.Value = oRng.Offset(0, 1)
    End With
    Et plus précisement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.TextBox1.Value = oRng.Offset(0, 1)
    Il me renvoie variable objet ou variable de bloc with non définie.

    Comment faire pour régler ce problème ?

    Sur la même liste, tous les nombres entiers fonctionnent parfaitement.

    Merci d'avance. Cordialement,
    Arnaud

  8. #8
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour ArnaudYes,

    C'est HYPER bizarre ! En fait, le "Find" n'arrive pas à trouver les chiffres décimaux.
    Pourtant ma valeur Me.ComboBox2.Value est bien la bonne...

    Je dois t'avouer ne pas bien comprendre... Je continue de chercher.
    Je te tiens au courant.

    Cordialement,
    Kimy

    EDIT : Je ne sais pas... J'ai ouvert un post sur le problème que je rencontre...
    On te proposera une méthode peut-être plus fonctionnelle que la mienne avant... Sinon, je te donnerai le résultat.

  9. #9
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Arnaud,

    Voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub ComboBox2_Change()
    Dim oRng As Range
     
    With Worksheets("ArnaudYes")
        Set oRng = .Rows(1).Find(Me.ComboBox1.Value, LookIn:=xlValues, LookAt:=xlWhole)
        Set oRng = .Columns(oRng.Column).Find(Replace(Me.ComboBox2.Value, ",", "."), LookIn:=xlValues, LookAt:=xlWhole)
     
        Me.TextBox1.Value = oRng.Offset(0, 1)
    End With
     
    End Sub
    Comme je l'ai écris dans mon post précédent, la discussion ouverte sur la problématique reste pour autant active.
    Je ne trouve pas ça très propre de forcer la recherche entre un point "." et une virgule "," mais, au moins, ça fonctionne.

    N'hésite pas à revenir vers moi !
    Cordialement,
    Kimy

  10. #10
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Bonjour,

    sinon Arnaud l'explication est dans cette discussion


    __________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …


    __________________________________________________________________________________________________
    Tous unis, tous Charlie

  11. #11
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 12
    Par défaut
    Merci ! Tout est nickel !

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

Discussions similaires

  1. [checkbox] Récupération des valeurs de checkbox
    Par chng001 dans le forum Struts 1
    Réponses: 13
    Dernier message: 07/09/2009, 20h31
  2. [struts] [checkbox] récupération des valeurs cochées
    Par abourell dans le forum Struts 1
    Réponses: 16
    Dernier message: 10/06/2005, 20h58
  3. Réponses: 8
    Dernier message: 09/03/2005, 10h47
  4. récupération de valeur de lien
    Par sex-sansbol dans le forum ASP
    Réponses: 3
    Dernier message: 07/06/2004, 10h43
  5. Récupération de valeurs d'un tableau
    Par leeloo076 dans le forum ASP
    Réponses: 12
    Dernier message: 25/03/2004, 10h59

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