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 VBA excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2011
    Messages : 14
    Par défaut Boucle VBA excel
    Bonjour

    cela fait quelque jours que je n'arrive pas a fair une boucle sur ma fonction de recherche dans une colonne.j'ai essayé plusieur methode mais ou ca ne fonctionne pas, ou j'ai des erreurs lorsque ma variable est vide.
    Voici mon code, qui fonctionne bien mais ne trouve que la premiere ligne et ne passe pas a la ligne en dessous.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub log()
    Dim texte1 As Variant
    Set CELLULETROUVEE = Sheets("F3").Range("A:A").Find("fuel", LookIn:=xlValues)
    Sheets("F3").Range("I:I") = CELLULETROUVEE
    End Sub
    avez vous quelques explications, et solutions.
    Merci

  2. #2
    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,

    Et comme ceci ?
    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
     
    Sub log()
     
        Dim Plage As Range
        Dim CELLULETROUVEE As Range
        Dim texte1 As Variant
        Dim Adresse As String
        Dim I As Integer
     
        With Sheets("F3")
            Set Plage = .Range(.[A1], .Range("A" & Rows.Count).End(xlUp))
        End With
     
        texte1 = "fuel"
     
        Set CELLULETROUVEE = Plage.Find(texte1, , xlValues, xlWhole)
     
        If Not CELLULETROUVEE Is Nothing Then
     
            Adresse = CELLULETROUVEE.Address
     
            Do
     
                I = I + 1
                Sheets("F3").Range("I" & I) = CELLULETROUVEE
                Set CELLULETROUVEE = Plage.FindNext(CELLULETROUVEE)
     
            Loop While CELLULETROUVEE.Address <> Adresse
     
        End If
     
    End Sub
    Hervé.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Employé
    Inscrit en
    Mars 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Employé
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2011
    Messages : 5
    Par défaut
    Bonjour,

    Dans mes projets je suis obliger d'utiliser ce genre de fonction, alors au lieu de le ré écrire à chaque fois, j'en ai fait une fonction qui retourne le numéro de la ligne trouvée :

    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    Function Fonction_Trouver_Ligne(Feuille_Ou_Effectuer_La_Recherche As Worksheet, _
                                        Colonne_De_Recherche As Integer, _
                                        Valeur_A_Rechercher As String) As Integer
     
     
     
    'Initialiser la fonction
     
        Fonction_Trouver_Ligne = 0
     
     
     
        With Feuille_Ou_Effectuer_La_Recherche
     
     
     
        'Rechercher la string dans la colonne voulue
     
            Set Trouve = .Columns(Colonne_De_Recherche).Find(Valeur_A_Rechercher)
     
     
     
        'Est-ce que la recherche à trouver une correspondance ?
     
     
     
            If Trouve Is Nothing Then
     
        'Est-ce que la recherche à trouver une correspondance ? => NON
     
     
     
            'Sortir de la fonction
     
                Exit Function
     
     
     
            End If
     
     
     
        'Est-ce que la valeur trouvée est exactement la valeur recherchée ?
     
     
     
            If Trouve.Text = Valeur_A_Rechercher Then
     
        'Est-ce que la valeur trouvée est exactement la valeur recherchée ? => OUI
     
     
     
            'Donner à la fonction la position de la ligne
     
                Fonction_Trouver_Ligne = Trouve.Row
     
     
     
            'Sortir de la fonction
     
                Exit Function
     
     
     
            Else
     
        'Est-ce que la valeur trouvée est exactement la valeur recherchée ? => NON
     
     
     
            'Initialiser la variable
     
                MeM_Ligne = 0
     
     
            '=> Effectuer la recherche tant que l'on est pas revenu sur la première ligne trouvée
     
                Do Until Trouve.Row = MeM_Ligne
     
     
     
                'Est-ce que c'est la première colonne où l'on trouve la valeur ?
     
     
     
                    If MeM_Ligne = 0 Then
     
                'Est-ce que c'est la première colonne où l'on trouve la valeur ? => OUI
     
     
     
                    'Mémoriser la position de la ligne
     
                        MeM_Ligne = Trouve.Row
     
     
     
                    End If
     
     
     
                'Trouver la prochaine ligne contenant la valeur reherchée
     
                    Set Trouve = .Columns(Colonne_De_Recherche).FindNext(Trouve)
     
     
     
                'Est-ce que la valeur trouvée est exactement la valeur recherchée ?
     
                    If Trouve.Text = Valeur_A_Rechercher Then
     
                'Est-ce que la valeur trouvée est exactement la valeur recherchée ? => OUI
     
                        Fonction_Trouver_Ligne = Trouve.Row
     
     
     
                'Donner à la fonction la position de la ligne
     
                        Exit Function
     
     
     
                    End If
     
     
     
                Loop
     
     
     
            End If
     
     
     
        End With
     
     
     
    End Function

  4. #4
    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
    Re,

    Teste ce qui suit, j'ai modifié ta fonction en supprimant quelques lignes inutiles car il suffit d'indiquer à la fonction Find si la recherche doit être strictement identique ou partielle (constantes en commentaire dans le code). Pour poster du code, utilise les balises 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
     
    Function Fonction_Trouver_Ligne(Feuille_Ou_Effectuer_La_Recherche As Worksheet, _
                                    Colonne_De_Recherche As Integer, _
                                    Valeur_A_Rechercher As String) As Long
     
        Dim Trouve As Range
     
        'Initialiser la fonction
        'Fonction_Trouver_Ligne = 0 '<<-pas nécessaire, toujours égale à 0 en début d'appel
     
        With Feuille_Ou_Effectuer_La_Recherche
     
            'Rechercher la string dans la colonne voulue avec correspondance exacte
            'xlWhole=recherche stricte
            'xlPart=recherche partielle
            Set Trouve = .Columns(Colonne_De_Recherche).Find(Valeur_A_Rechercher, , xlValues, xlWhole)
     
            'si correspondance exacte
            If Not Trouve Is Nothing Then
                Fonction_Trouver_Ligne = Trouve.Row
            End If
     
        End With
     
    End Function
    Hervé.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Employé
    Inscrit en
    Mars 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Employé
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2011
    Messages : 5
    Par défaut
    Re,

    Effectivement, le code est beaucoup plus simple !!

    Merci beaucoup Hervé !!

  6. #6
    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
    De rien, c'est toujours avec plaisir !

    Bonne continuation.

Discussions similaires

  1. Creation boucle vba excel
    Par gaever dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 15/12/2014, 15h41
  2. Boucle VBA Excel
    Par BENNASR dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 25/11/2014, 14h13
  3. Boucles VBA Excel
    Par Sniper69 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/11/2014, 23h13
  4. boucle vba excel
    Par nadeson dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 06/06/2012, 09h29
  5. Boucles vba Excel
    Par viscere dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/07/2007, 07h07

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