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érer des données sous conditions


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 40
    Points : 20
    Points
    20
    Par défaut récupérer des données sous conditions
    Bonjour Forum,
    J'aurais besoin d'un petit coup de main niveau synthaxe svp
    Je cherche à récupérer dans des listes les données nécessaires pr mettre en place un graphique.
    Mais avant il faut les constituer...donc la première consiste à récupérer les noms cochés dans une listBox, et les suivantes doivent contenir des infos selon l'information récupérée dans la première.
    C'est au niveau du code en gras que je ne trouve pas comment exprimer mon besoin.(en gros récupérer la donnée de la colonne "Actions planifiées" selon la ligne, dans le même tableau, du nom récupéré dans la listbox)

    Voici mon code:
    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
    Dim i As Integer
    Dim str() As String 'liste des noms d'opérateurs cochés
    Dim plan() As Integer ' liste du nbr d'actions planifiées selon opérateur coché
    Dim real() As Integer ' liste du nbr d'actions réalisées selon opérateur coché
    Dim iIndex As Integer ' nombre d'élements selectionnés
    
    'Initialisation: aucun éléement n'est selectionné
    iIndex = 0
    
    'Boucle sur les élements de la listBox; Les index des Listbox commencent par zéro
    For i = 0 To Choix_operateur.ListBox1.ListCount - 1
    
    'Test: élement coché
        If Choix_operateur.ListBox1.Selected(i) = True Then
    
    'Ajouter un élement à chaque liste selon le nom coché
           iIndex = iIndex + 1
           ReDim Preserve str(iIndex)
           ReDim Preserve plan(iIndex)
           ReDim Preserve real(iIndex)
           str(UBound(str)) = Choix_operateur.ListBox1.List(i)
                  
    '       plan(UBound(plan)) = 
    '       real(UBound(real)) = 
           
       End If
    Next i

    J'ose ésperer qu'il existe parmi vous des gens plus habiles que moi en VBA (ça ne devrait pas êtr dûr ça), ou qui ont déjà vu pareil chose...
    Merci d'avance.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    Tu peux utiliser l'instruction Find (F1 sur l'instruction pour exemple) sur la plage de recherche pour trouver la ligne et ainsi retourner la valeur de la colonne "Actions planifiées"
    Jérôme

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 40
    Points : 20
    Points
    20
    Par défaut
    Merci pr ta réactivité...

    Mais justement ce que je n'arrive pas à enchainer c'est la synthaxe:
    ce serait genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    plan(UBound(plan)) = (Worksheets("PMmain").Range("Actions_planifiées").Row(Worksheets("PMmain").Range
    ("Nom").Find(Choix_operateur.ListBox1.List(i)).Row.value)).value
    Je ne pense pas que je caractérise les colonnes de tableau correctement...t'en penses quoi?

  4. #4
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Tu ne peux pas avoir la valeur de ta colonne en une seule ligne de code
    Tu recherches la valeur de la listbox dans la colonne de recherche (dans ton code, je ne comprend pas ou tu recherches)

    Ca donne quelque chose comme cela. (Attention, code non testé car tapé directement)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dim rg as range
    set rg = sheets("FeuilRecherche").range("A:A").find(Selection Listbox)
    if not rg is nothing then
       plan(UBound(plan)) = Sheets("FeuilleDonnees").Cells(rg.row,NumColonneActionsPlannifiees).value
    End if
    Jérôme

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 40
    Points : 20
    Points
    20
    Par défaut
    OK!
    Du coup ça devrait passer avec ça non?

    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
    Dim i As Integer
    Dim str() As String
    Dim plan() As Integer
    Dim real() As Integer
    Dim rg As Range
    Dim iIndex As Integer ' nombre d'élements selectionnés
     
    'Initialisation: aucun éléement n'est selectionné
    iIndex = 0
     
    'Boucle sur les élements de la listBox; Les index des Listbox commencent par zéro
    For i = 0 To Choix_operateur.ListBox1.ListCount - 1
     
    'Test: élement coché
        If Choix_operateur.ListBox1.Selected(i) = True Then
     
    'Ajouter un élement à la liste des noms cochés
           iIndex = iIndex + 1
           ReDim Preserve str(iIndex)
           ReDim Preserve plan(iIndex)
           ReDim Preserve real(iIndex)
           str(UBound(str)) = Choix_operateur.ListBox1.List(i) 'On récupère l'élement coché et on l'insère à la fin de la liste
     
     
           Set rg = Sheets("PMmain").Range("H16:H24").Find(Choix_operateur.ListBox1.List(i))
           If Not rg Is Nothing Then
           plan(UBound(plan)) = Sheets("PMmain").Cells(rg.Row, 23).Value
           real(UBound(real)) = Sheets("PMmain").Cells(rg.Row, 24).Value
           End If
     
       End If
    Next i
    Il n'y aurait pas un moyen sur VBA pr tester les données que je calcule là?

  6. #6
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Tu peux mettre un point d'arret dans ta boucle (Clic gauche sur la marge grise a gauche du code) et avancer en pas a pas avec la touche F8
    Jérôme

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 40
    Points : 20
    Points
    20
    Par défaut
    Ok merci Bcp!! Jvé essayer tt ça
    Juste une dernière petite question est ce que tu pourrais m'expliquais cette petite ligne là??? (en français stp... )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not rg Is Nothing Then

  8. #8
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    c'est dans le cas ou il ne trouve pas la données dans la matrice de recherche
    Jérôme

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 40
    Points : 20
    Points
    20
    Par défaut
    D'accord!
    G essayé ton astuce mm si ça naffiche rien ça parcourt les instructions de la boucle correctement selon les noms que je selectionne donc ça doit etre bon!!
    Merci beaucoup Jérôme!!!

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

Discussions similaires

  1. [XL-2007] D'un classeur, récupérer des données sous condition
    Par SenseniX dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 25/06/2010, 10h58
  2. [XL-2007] Récupérer des données sous conditions
    Par christophe31 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/05/2010, 15h20
  3. Récupérer des données sous Access
    Par 18mar dans le forum Access
    Réponses: 2
    Dernier message: 19/12/2007, 14h40
  4. [Excel] Récupérer des données sous MATLAB 6
    Par mickado_82 dans le forum MATLAB
    Réponses: 3
    Dernier message: 04/07/2007, 17h27
  5. comment récupérer des données sous DOS
    Par ad44dz dans le forum Ordinateurs
    Réponses: 1
    Dernier message: 06/11/2006, 15h29

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