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 :

Commande .Find qui marche mais qui ne prend pas en compte les doublons [XL-2010]


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
    Ingénieur qualité méthodes
    Inscrit en
    Octobre 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Octobre 2018
    Messages : 22
    Par défaut Commande .Find qui marche mais qui ne prend pas en compte les doublons
    Bonjour à tous,

    Avant toute chose, un petit message pour remercier les membres!
    Je viens de me remettre à faire du VBA et ce site est d'une grande aide!

    C'est d'ailleurs par ce biais que j'ai réussi (en partie) à faire ce que je souhaite, mais là je bloque.
    Je vous explique.

    Je dois comparer les données, Feuil1 Colonne A, à celles en Feuil2 Colonne A.
    Si les données correspondent, il sort en Feuil1 Colonne B les données présentes en Feuil2 Colonne J de la ligne correspondante.
    Sinon, il met 0.
    Jusqu'ici pas de problème.

    Mais, le programme ne gère pas les doublons.
    C'est à dire que si, en Feuil1, A2= 001 et que A5= 001, j'aurais des données en Feuil 1 B2 mais pas en B5.

    Voici le 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
     
    Sub Sandre_RD()
    Dim FL1 As Worksheet
    Dim FL2 As Worksheet
    Dim c As Range, Donnee As String
     
     
       Set FL1 = Worksheets("Données") 
        Set FL2 = Worksheets("SandreRD") 
        For NoLig = 2 To FL2.Range("A65535").End(xlUp).Row
            Donnee = FL2.Cells(NoLig, 1)  
            With FL1.Range("a1:a" & FL1.Range("A65535").End(xlUp).Row) 
               Set c = .Find(Donnee, LookIn:=xlValues)
                  If Not c Is Nothing Then
                    FL1.Cells(c.Row, 2) = FL2.Cells(NoLig, 10)
     
                  Else
     
                     FL1.Cells(NoLig, 2).Value = 0
                End If
     
               Set c = Nothing
            End With
        Next
     
    End Sub
    J'ai beau chercher, je trouve beaucoup de choses pour supprimer les doublons, mais ne trouve pas de réponses à mon problème.
    Dois je passer par une itération?

    Un peu d'aide serait la bienvenue!
    Merci d'avance!

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Une solution simple et fiable :
    En début de macro, tu fais une copie de ta feuille source.
    Chaque fois que tu trouves une référence, tu supprimes la ligne après l'avoir traitée.
    En fin de macro, tu supprimes cette feuille provisoire.

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Octobre 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Octobre 2018
    Messages : 22
    Par défaut
    Merci pour ces indications!
    Je vais voir comment faire cela et reviendrai vers vous!

    (Désolé pour le retour tardif, je n'avais pas de connexion ce week-end)

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour
    find ET!!! findnext(dans un do/loop) (voir l'exemple dans l'aide touche F1)
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Octobre 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Octobre 2018
    Messages : 22
    Par défaut
    Bonjour patricktoulon,

    Je vais regarder dans cette direction, merci!
    Je suis débutant, et rouillé, et ne m'en sors pas avec la solution proposée par Menhir.

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Octobre 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Octobre 2018
    Messages : 22
    Par défaut
    Et c'est tout bon!!
    Merci !!

    Trois petites lignes et le problème est réglé...
    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
    Sub Sandre_NAF()
     
    Dim FL1 As Worksheet
    Dim FL3 As Worksheet
    Dim c As Range, Donnee As String
     
     
       Set FL1 = Worksheets("Données") 'Le fichier où tu colles
        Set FL3 = Worksheets("SandreNAF") 'Le fichier où tu cherches
     
        For NoLig = 2 To FL3.Range("A65535").End(xlUp).Row
            Donnee = FL3.Cells(NoLig, 1)  'ajouté
            With FL1.Range("c1:c" & FL1.Range("C65535").End(xlUp).Row) 'tu désignes ta plage de recherche
               Set c = .Find(Donnee, LookIn:=xlValues)
     
                  If Not c Is Nothing Then
                  firstAddress = c.Address
                  Do
                    FL1.Cells(c.Row, 4) = FL3.Cells(NoLig, 3)
     
     
                     Set c = .FindNext(c)
                Loop While Not c Is Nothing And c.Address <> firstAddress
     
                Else
     
                   FL1.Cells(NoLig, 4).Value = 0
     
                End If
     
                ' Set c = Nothing
     
     
            End With
        Next
     
    End Sub
    Je vais essayer d'adapter cela sur mes autres feuilles et traitements.
    Encore merci!

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

Discussions similaires

  1. [XL-2010] Export PDF qui ne prend pas en compte les images
    Par _Bastien_ dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/10/2018, 14h48
  2. Réponses: 2
    Dernier message: 29/03/2008, 13h04
  3. Requete Update ne prend pas en compte les champs paramétrés?
    Par Oceliane dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 08/06/2007, 22h34
  4. Réponses: 1
    Dernier message: 13/02/2007, 16h53
  5. requete qui marche, puis qui marche plus, puis qui marche ..
    Par exyacc dans le forum Bases de données
    Réponses: 2
    Dernier message: 05/04/2006, 19h32

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