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 :

Loop While Not C Is Nothing And C.Address <> firstAddress NE PASSE PAS


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
    Responsable des études
    Inscrit en
    Février 2021
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2021
    Messages : 24
    Par défaut Loop While Not C Is Nothing And C.Address <> firstAddress NE PASSE PAS
    Bonjour à toutes et à tous,

    J'ai récupéré ce code sur ce forum @mercatog mais la ligne Loop While Not C Is Nothing And C.Address <> firstAddress ne passe pas.
    Une idée ?

    Voici le code complet:

    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
    Sub filter_by_name()
        Dim MotCle
        Dim NomFeuille
        Dim i As Byte
        Dim C As Range
        Dim B As String
        Dim Ligne As Integer
     
        'On définit les mots clés
        MotCle = Array("Alexios HARKIOLAKIS")
        NomFeuille = Array("By names")
        'On effectue la recherche de chaque mot clé dans la colonne W de la feuille 'Log'
        For i = 0 To UBound(MotCle)
            Do
                Set C = Worksheets("Log").Columns(5).Find(MotCle(i), LookIn:=xlValues, LookAt:=xlPart)
                'Si le mot clé est trouvé
                If Not C Is Nothing Then
                    firstAddress = C.Address
                    'On définit le nom de la feuille où sera effectuée la copie
                    B = NomFeuille(i)
                    With Worksheets(B)
                        'On définit la ligne où sera effectué le collage
                        Ligne = .Range("E" & Rows.Count).End(xlUp).Row + 1
                        'On effectue le copier / coller
                        C.EntireRow.Copy .Range("A" & Ligne)
                        Set C = .FindNext(C)
                    End With
                End If
            Loop While Not C Is Nothing And C.Address <> firstAddress
        Next i
    End Sub

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour Kilouyou,

    Bienvenue sur ce forum.

    Avant toute chose, pour plus de lisibilité, tu peux borner le code que tu reportes avec les balises #.
    De plus, qu'entends-tu par "ne passe pas"? Un message d'erreur? Lequel?
    As-tu déjà essayé sur le tableur Excel, AVANT d'envisager un développement VBA?

    D'autre part, avec l'arrivée des tableaux structurés, c'en est fini aujourd'hui de cette méthode End(xlUp), ou du moins dans 99% des cas

    L'ami mercatog() avait sans-doute reporté l'aide en ligne de la méthode Find.

    Dans le cas qui t'intéresse aujourd'hui.
    Un filtre peut très bien s'affecter à l'une des colonnes du tableau structuré (ou table de données).
    Il serait alors générique (le caractère * répondant au paramètre xlPart de ta recherche)
    Ensuite, le corps de tableau ainsi filtré serait copié.

    Exemple

    Nom : CopieFiltre_20210412.JPG
Affichages : 592
Taille : 13,1 Ko

    Le code suivant va recopier les données filtrées correspondant aux voitures contenant la chaîne 'OR".
    Donc ici, 2 enregistrements.

    J'utilise le CodeName des feuilles de travail.

    A 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
    Option Explicit
     
    Sub CopyFilter()
    With Sht_Données
            If .FilterMode = True Then .ListObjects("Tableau2").AutoFilter.ShowAllData
            With .ListObjects("Tableau2")
                    .Range.AutoFilter Field:=.ListColumns("Voiture").Index, Criteria1:="=*OR*"
                    .DataBodyRange.Copy
                    Sht_LaCopie.Range("A1").PasteSpecial Paste:=xlPasteValues
                    Application.CutCopyMode = False
                    .AutoFilter.ShowAllData
            End With
    End With
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Responsable des études
    Inscrit en
    Février 2021
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2021
    Messages : 24
    Par défaut
    Bonjour MarcelG,
    En fait je souhaite récupérer toutes les adresses des cellules d'une 1ère feuille qui contiennent une donnée précise (un nom) et coller ces adresses sur une 2ème feuille.
    Un peu comme CTRL+F, rechercher tout le fait sauf qu'il n'est pas possible de récupérer les résultats.
    Ces valeurs (noms) se retrouvent dans plusieurs colonnes de la 1ère feuille.
    Merci pour ton aide et tes précieux commentaires.
    BAT

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour Bat, Bonjour au Forum,

    En fait je souhaite récupérer toutes les adresses des cellules d'une 1ère feuille qui contiennent une donnée précise (un nom) et coller ces adresses sur une 2ème feuille.
    Quel intérêt y a-t-il de copier des adresses?

    Un peu comme CTRL+F, rechercher tout le fait sauf qu'il n'est pas possible de récupérer les résultats.
    Pourrai-tu reporter 2 catures d'écran
    - la plage de données où se trouvent les cellules concernées
    - la feuille destination contenant le résultat
    avec un exemple de valeur

    On devrait y voir plus clair.

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    La ligne Loop While Not c Is Nothing And c.Address <> FirstAddress ne passe pas lorsque c est Nothing car le code ne sait alors pas évaluer c.Address => plantage.

    Cela dit, je suis, comme Marcel, en attente d'éclaircissements sur le but de la manoeuvre et la configuration de ton classeur (copie d'écran, ...). Je plussoie aussi l'utilisation des tableaux structurés car ils me semblent adaptés à ton cas.

    Que souhaites-tu réaliser?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Membre averti
    Homme Profil pro
    Responsable des études
    Inscrit en
    Février 2021
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2021
    Messages : 24
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Salut.

    La ligne Loop While Not c Is Nothing And c.Address <> FirstAddress ne passe pas lorsque c est Nothing car le code ne sait alors pas évaluer c.Address => plantage.

    Cela dit, je suis, comme Marcel, en attente d'éclaircissements sur le but de la manoeuvre et la configuration de ton classeur (copie d'écran, ...). Je plussoie aussi l'utilisation des tableaux structurés car ils me semblent adaptés à ton cas.

    Que souhaites-tu réaliser?
    Bonjour,
    C'est un fichier Excel dont le format m'était imposé par des gens qui n'y connaissent rien en Excel. Ce format est surtout axé sur la présentation et pas sur la facilité d'utilisation... Disons que toutes les colonnes et les lignes contiennent des données de formats différents !
    Finalement, je m'en suis sorti, sans VBA avec des formules et des "indirect" dans tous les coins.
    Dans tous les cas merci pour vos conseils.

Discussions similaires

  1. "While Not" ou "Until" ?
    Par 4rn0_o dans le forum VBA Access
    Réponses: 1
    Dernier message: 08/07/2008, 15h38
  2. Réponses: 2
    Dernier message: 24/04/2008, 15h31
  3. Loop while qui plante
    Par Socrate127 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/04/2008, 23h09
  4. loop while, for et sql
    Par rcmn dans le forum Général Python
    Réponses: 9
    Dernier message: 02/03/2007, 19h11
  5. [VBA-E] PRobleme avec une boucle DO..LOOP WHILE
    Par AliochaBada dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 31/07/2006, 01h04

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