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 :

Recherche V (VBA) incorrect) ou incomplet


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 81
    Par défaut Recherche V (VBA) incorrect) ou incomplet
    Bonjour,
    je viens vers vous pour solliciter votre aide sur une recherche V sur VBA dont j'ai trouvé une partie de la solution ici sur le forum.
    Mais malheureusement mon manager s'est rendu compte que ça repond pas à la demande.

    Moi je voudrais coller les données de ma feuille New dans la feuille Resultat par recherche V.
    Sauf que ma macro ellle, colle les données de la meme feuille Resultat dans la feuille Resultat elle meme.
    Est ce quelqu'un aurait une idée de comment copier les données de la feuille New dans Resultat .
    En vous remerciant de votre aide.
    je suis complétement stressé car je n'arrive pas à trouver la solution.
    ci-joint mon exemple de fichier.
    voici le code qui doit etre corrigé.
    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
    Sub test()
    Dim Plage As Range, C As Range, Teste
    Dim Offset As Long
    With Sheets("New")
    For i = 0 To Sheets("Resultat").UsedRange.Columns.Count - 1 Step 3
    With Sheets("Resultat")
        Set Plage = .Range(.[A1].Offset(, i), .Cells(.Rows.Count, 1 + i).End(xlUp))
    End With
        For Each C In Plage
                 Teste = Application.VLookup(C.Value, .Range(.[A1].Offset(, Offset), .Cells(.Rows.Count, 1 + Offset).End(xlUp)), 1, 0)
            If IsError(Teste) Then
                C.Offset(, 1) = "Non présent"
            Else
     
            C.Offset(, 1) = Application.VLookup(C.Value, .Range(.[A1].Offset(, Offset), .Cells(.Rows.Count, 1 + Offset).End(xlUp)), 1, 0)
            End If
        Next C
        Offset = Offset + 1
        Next
    End With
     
    MsgBox "recherche terminée"
    End Sub
    Fichiers attachés Fichiers attachés

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

    Ca fonctionne correctement.

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 81
    Par défaut
    Bonjour Daniel,
    Merci pour la réponse.
    Justement c'est ça qui ma trompé aussi mais le resultat est faux.
    Il fait pas de recherche V en réalité.
    Normalement quand j'ai des clés communes (c'est a dire si Ai=Bi) il doit me ramener les valeurs de New dans Resultat pour lesquelles la clé est commune.
    j'ai ajouté un onglet final dans lequel j'ai mis ce que je veux obtenir exactement.
    Merci pour vos reponse.
    je suis perdu.
    Fichiers attachés Fichiers attachés

  4. #4
    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
    Essaie :

    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
    Sub test()
    Dim Plage As Range, C As Range, Teste
    Dim Offset As Long
    With Sheets("New")
    Offset = 1
    With Sheets("Resultat")
        Set Plage = .Range(.[A1].Offset(, i), .Cells(.Rows.Count, 1 + i).End(xlUp))
    End With
    For i = 0 To Sheets("Resultat").UsedRange.Columns.Count - 1 Step 3
        For Each C In Plage
                 Teste = Application.VLookup(C.Value, .Range(.[A1], .Cells(.Rows.Count, 6).End(xlUp)), Offset, 0)
            If IsError(Teste) Then
                C.Offset(, i + 1) = "Non présent"
            Else
     
            C.Offset(, i + 1) = Teste
            End If
        Next C
        Offset = Offset + 1
        Next
    End With
     
    MsgBox "recherche terminée"
    End Sub

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 81
    Par défaut
    Bonjour Daniel,
    J'ai testé la macro sur l'ensemble de mon tableau mais il s'arrete en cours de route.
    C'est à dire elle recherche pas toutes les colonnes,elle arrete le colllage à la 19eme colonne.je ne sais pas pourquoi.
    Ce que je ne comprend pas c'est que lorsque je change le 6 dans Teste = Application.VLookup(C.Value, .Range(.[A1], .Cells(.Rows.Count, 6).End(xlUp)), Offset, 0) par un nombre >7 il fait plus rien bizarrement.
    Est ce que vous pourrez m'expliquer pourquoi 6? et pourquoi il ne peux pas comparer toutes les colonnes.
    NB: j'ai plus plus 200 colonnes.
    Merci d'avance de votre aide.
    cdt

  6. #6
    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 peut-être comme cecci :

    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 test()
    Dim Plage As Range, C As Range, Teste
    Dim Offset As Long
    Dim Col As Integer
    With Sheets("New")
    Offset = 1
    Col = .Cells(, .Columns.Count).End(xlToLeft).Column
    With Sheets("Resultat")
        Set Plage = .Range(.[A1].Offset(, i), .Cells(.Rows.Count, 1 + i).End(xlUp))
    End With
    For i = 0 To Sheets("Resultat").UsedRange.Columns.Count - 1 Step 3
        For Each C In Plage
                 Teste = Application.VLookup(C.Value, .Range(.[A1], .Cells(.Rows.Count, Col).End(xlUp)), Offset, 0)
            If IsError(Teste) Then
                C.Offset(, i + 1) = "Non présent"
            Else
     
            C.Offset(, i + 1) = Teste
            End If
        Next C
        Offset = Offset + 1
        Next
    End With
     
    MsgBox "recherche terminée"
    End Sub

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

Discussions similaires

  1. recherche Multicriteres [VBA] [SQL]
    Par Scopas dans le forum VBA Access
    Réponses: 5
    Dernier message: 22/11/2007, 20h22
  2. Recherche Multi / VBA
    Par deuf86 dans le forum IHM
    Réponses: 6
    Dernier message: 24/07/2007, 10h02
  3. [VBA-E] Recherche en vba
    Par cety64 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/03/2007, 00h56
  4. [débutante] recherche multicritère vba
    Par Mimi64 dans le forum IHM
    Réponses: 7
    Dernier message: 01/08/2006, 09h57
  5. [Vba + Excel] requete rechercher en vba
    Par Emcy dans le forum Access
    Réponses: 2
    Dernier message: 14/11/2005, 09h38

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