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 :

Boucle et vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2010
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 21
    Par défaut Boucle et vba
    bonjour à tous
    tout d'abord merci à toutes vos discussions
    excel est tellement puissant et bien que debutant je suis passionné
    je repose mon probleme qui je pense est simple mais comme je l'ai dit je suis debutant
    j'ai un tableau tout simple avec nom ,prenom,adresse sur feuil1
    sur feuil2 j'ai fais une recherchev (en tapant le nom,et ca me trouve l'adresse
    ca marche)
    le probleme est lorsque j'ai 2 noms identiques ma recherchev ne me trouve que le 1er nom
    je suppose qu'il faudrait faire une boucle mais je ne sais pas faire
    soit est il possible de faire une macro avec recherchev et faire une boucle,
    soit se passer de la recherchev et faire simplement une macro
    pouvez vous m'aider a resoudre ce probleme que je cherche depuis longtemps
    j'ai essayé d'adapter des boucles trouvées dans des discussions mais sans succes
    merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Il faudrait être plus précis quant à ta demande.

    Pour gérer les doublons de nom il te faut un autre critère de recherche:

    Par exemple le nom et le prénom auquel cas l'utilisation de la fonction 'SOMMEPROD' permet de récupérer le reste des données.
    Ou tu peux concaténer le nom et le prénom dans la liste de recherche...
    Ou faire un traitement en VBA...

    Le plus simple est sans doute de concaténer le nom et le prénom pour réaliser la recherche.

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Sans plus de précisions, en VBA. La fonction retourne le message correspondant, à adapter :
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    Sub Test()
     
        MsgBox Chercher("Le nom", "Le prénom")
     
    End Sub
     
    Function Chercher(Nom As String, Prenom As String) As String
     
        Dim Plage As Range
        Dim Cel As Range
        Dim Adr As String
        Dim I As Integer
     
        'défini la plage de recherche en colonne "A" (colonne où se trouvent les noms de famille
        With Worksheets("Feuil1")
     
            Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
     
        End With
     
        'recherche le nom
        Set Cel = Plage.Find(Nom, , xlValues, xlWhole)
     
        'si trouvé
        If Not Cel Is Nothing Then
     
            'mémorise l'adresse de la 1ère cellule
            Adr = Cel.Address
     
            'boucle à la recherche de tous les noms correspondant
            Do
     
                'si le prénom correspond, retourne le numéro de ligne et fin
                If Cel.Offset(, 1) = Prenom Then
     
                    Chercher = "L'enregistrement se trouve à la ligne " & Cel.Row & " !"
                    Exit Function
     
                'sinon, incrémente le nombre de fois où le nom est trouvé
                Else
     
                    I = I + 1
     
                End If
     
                'continu la recherche
                Set Cel = Plage.FindNext(Cel)
     
            Loop While Adr <> Cel.Address
     
            'si la variable à été incrémentée, le nom a bien été trouvé ma pas avec le prénom
            If I > 0 Then
     
                Chercher = "Il y a " & I & " enregistrement(s) au nom de '" & Nom & "' mais aucun avec le prénom '" & Prenom & "' !"
     
            End If
     
        'aucun enregistrement correspondant
        Else
     
            Chercher = "Il n'y a pas d'enregistrement du nom de " & Nom & " " & Prenom & " !"
     
        End If
     
    End Function
    Hervé.

Discussions similaires

  1. boucle sous VBA catia
    Par purp31 dans le forum Général VBA
    Réponses: 1
    Dernier message: 05/03/2009, 19h01
  2. Problème pour réaliser une macro "de boucles" dans VBA
    Par philou7176 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/12/2008, 15h41
  3. Boucles en VBA Excel
    Par JPR1347 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/08/2008, 21h15
  4. Boucle Combinaison VBA
    Par Surfeur dans le forum Macros et VBA Excel
    Réponses: 31
    Dernier message: 23/05/2008, 16h08
  5. Traiter 100 fichiers avec une boucle sous VBA excel
    Par sebastien06 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/04/2008, 09h39

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