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 et renvoie de valeurs


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Juin 2012
    Messages : 1
    Par défaut Recherche et renvoie de valeurs
    Bonjour à tous,

    je rencontre quelques difficultés pour un problème relativement simple je pense.
    Pour plus de clarté, je met mon fichier test en pj.

    Donc, je souhaite pour chaque onglet résultat de mon classeur, chercher la valeur en B1 (Numéro) dans le dernier onglet BDD.
    Si je la trouve, alors je reporte chaque nom d'arrêt de la base BDD dans mes cellules en colonne A de mon onglet résultat, seulement si la cellule [arrêt ; colResultat] n'est pas vide.

    c'est pas forcément clair donc j'ai mis un exemple de résultat voulu dans le dernier onglet.

    A noter que l'onglet BDD, je le reçois dans cette forme là.
    (Il est petit pour que je comprenne le fonctionnement de cette macro, mais en réalité il y a le triple de lignes / colonnes.)
    Je ne peux donc pas le modifier.


    J'ai volontairement effacé tous mes codes de macros que j'avais écrit pour éviter de comprendre le mic-mac que j'avais testé. Je pense qu'il est plus simple de reprendre à zéro.


    J'espère que c'est assez clair

    Merci d'avance
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Bonjour, une piste:
    A l'activation de la feuille résultat je lance la macro de recherche. (code à mettre dans chaque feuille résultat).
    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
    Private Sub Worksheet_Activate()
    Dim plage As Range, vval As String, i  As Long
    vval = Range("B1")
    i = 4
    With Sheets("bdd")
    Set plage = .UsedRange
    For Each c In .Range(plage.Address)
     If c.Value = vval Then
        For Each cel In .Range(.Cells(1, c.Column), .Cells(c.Row, c.Column))
            If cel.Value = "x" Then
                Range("A" & i) = .Cells(cel.Row, 1).Value
                i = i + 1
            End If
        Next cel
     Exit For
     End If
    Next c
     
    End With
    End Sub
    En gros je recherche la plage utilisée dans la feuille Bdd puis je fait une première boucle de recherche de la valeur (25,102, etc...) dans cette plage
    lorsque je trouve la valeur recherchée je recherche dans la colonne correspondante si il y a un 'x' si c'est le cas je récupère les données Arrêt que j'affiche dans ma feuille.

    EDIT:
    Ou alors ce sera plus rapide:
    dans un module tu met ce code: (remarque j'ai modifié le code en utilisant la méthode 'Find' c'est beaucoup plus rapide, du coup il ne boucle que sur la colonne)
    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
    Sub recherche_valeur()
    Dim vrech As Range, i  As Long
    Application.ScreenUpdating = False
     
    i = 4
     
    Range("A" & i).CurrentRegion.ClearContents
     
    With Sheets("bdd")
     
    Set vrech = .UsedRange.Find(Range("B1").Value)
     
    If Not vrech Is Nothing Then
     
     For Each c In .Range(.Cells(1, vrech.Column), .Cells(vrech.Row, vrech.Column))
         If c.Value = "x" Then
            Range("A" & i) = .Cells(c.Row, 1).Value
            i = i + 1
         End If
     Next c
     
    End If
     
    End With
     
    Application.ScreenUpdating = True
     
    End Sub
    ensuite, toujours à l'activation de la feuille cette fois tu met: (dans chaque feuille)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Activate()
    recherche_valeur
    End Sub

Discussions similaires

  1. recherche de la 1 ere cellule vide et renvoi de valeur
    Par trustvittel dans le forum Excel
    Réponses: 2
    Dernier message: 13/11/2009, 10h28
  2. Réponses: 11
    Dernier message: 21/03/2006, 17h57
  3. Recherche dans plage de valeur :
    Par lafouine dans le forum Langage SQL
    Réponses: 6
    Dernier message: 19/04/2005, 11h38
  4. renvoie une valeur erronée
    Par m@thieu dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/12/2004, 17h09
  5. Recherche fonctions rendant la valeur
    Par Bertrand_Collet dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 26/11/2002, 12h05

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