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 :

utilisation de la fonction "find"


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 36
    Par défaut utilisation de la fonction "find"
    Bonjour,

    Je suis un peu débutant et j'ai des difficultés dans l'utilisation de la commande Find

    je détaille:
    J'ai 2 fichiers info.xlsx et result.xlsx et je souhaite comparer l'association de deux cellules provenant de deux colonnes (A & B) (sur la même ligne) du fichier info.xlsx par rapport au colonne A & B du fichier result.xlsx.
    Si l'association existe inscrire les infos de la colonne C & D de la ligne trouvée du fichier "result" vers le fichier "info" en C & D, Sinon écrire "données non trouvées".

    J'ai essayé de tater avec ça...

    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
     
    Sub test()
    Dim cible As String
    Dim f As Integer
    Dim x As Long
    f = 2
    Do While Range("A" & f) <> ""
    cible = Sheets("feuil1").Range("A" & f)
     
    x = Workbooks(result.xlsx).Worksheets("feuil1").Columns("A:A").Find(cible, LookIn:=xlValues, LookAt:=xlWhole).Activate
    If x = 0 Then
        f = f + 1
        Else
        Range("C" & f) = Workbooks(result.xlsx).Worksheets("feuil1").Columns("C" & f)
    End If
    Loop
    End Sub
    Mais je ne crois pas avoir la bonne approche

    Merci de votre aide.
    @+

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut



    Bonjour,

    conformément aux règles de ce forum, merci de poster le code entre balises via l'icône dédiée # !

    Mauvaise utilisation de la méthode Find en cas de non correspondance, voir déjà son exemple dans l'aide VBA …


    _____________________________________________________________________________________________________
    Je suis Charlie, Bardo, Sousse

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Essaie (non testé) :

    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
    Sub test()
         Dim ShInfo As Worksheet, ShResult As Worksheet, C As Range, Plage As Range, X As Range
         Set ShInfo = Workbooks("info.xlsx").Sheets(1)
         Set ShResult = Workbooks("result.xlsx").Sheets(1)
         With ShResult
            Set Plage = .Range("A1", .Cells(.Rows.Count, 1).End(xlUp))
         End With
         With ShInfo
            For Each C In .Range("A1", .Cells(.Rows.Count, 1).End(xlUp))
                For Each X In Plage
                    If C.Value = X.Value And C.Offset(, 1).Value = X.Offset(, 1).Value Then
                        C.Offset(, 2).Value = X.Offset(, 2).Value
                        C.Offset(, 3).Value = X.Offset(, 3).Value
                        Exit For
                    End If
                Next X
            Next C
         End With
    End Sub

  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
    Bonjour,

    Ce n'est pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If x = 0 Then
        f = f + 1
        Else
        Range("C" & f) = Workbooks(result.xlsx).Worksheets("feuil1").Columns("C" & f)
    End If
    mais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If x Is Nothing Then
        f = f + 1
    Else
        Range("C" & f) = Workbooks(result.xlsx).Worksheets("feuil1").Columns("C" & f)
    End If
    Hervé.

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut





    Ne manque-t-il point les guillemets dans le nom du classeur ?!


  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
    Bien vu Marc !

    Hervé.

Discussions similaires

  1. Utilisation de la fonction find
    Par ylabarre dans le forum VBA Outlook
    Réponses: 0
    Dernier message: 29/08/2007, 16h02
  2. Réponses: 1
    Dernier message: 19/04/2007, 09h08

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