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 :

Probleme de rechercheV sous VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 81
    Points : 50
    Points
    50
    Par défaut Probleme de rechercheV sous VBA
    Bonjour à tous,
    je me permets de revenir vers vous car j'ai besoin de votre aide.
    Je m'explique:
    je dois comparer des colonnes 2 à 2,cependant je dois copier coller(par recherche V) les colonnes d'une des feuilles à cotés de celles de l'autre.(cf fichier joint).
    j'ai reussi à faire inserrer des colonnes vides dans la feuille resultat et j'ai aussi réussi à rappatrier la colonne A de ma feuille New à coté de la colonne A de ma feuille resultat(par recherche V) .
    Mon probleme est que je souhaiterai faire pareil pour les autres par une boucle mais je n'y arrive pas En vous remerciant d'avance.
    Je vois ci joint le resultat que je veux obtenir.
    NB:j'ai plus de 150 colonnes.

    voici le code que j'ai réussi à faire pour le premier

    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
    Sub test()
     
    Dim Plage As Range, C As Range, Teste
    With Sheets("Resultat")
        Set Plage = .Range(.[A1], .Cells(.Rows.Count, 1).End(xlUp))
    End With
    With Sheets("New")
        For Each C In Plage
            Teste = Application.VLookup(C.Value, .Range(.[A1], .Cells(.Rows.Count, 1).End(xlUp)), 1, 0)
            If IsError(Teste) Then
                C.Offset(, 1) = "Non présent"
            Else
            C.Offset(, 1) = Application.VLookup(C.Value, .Range(.[A1], .Cells(.Rows.Count, 1).End(xlUp)), 1, 0)
            End If
        Next C
    End With
    MsgBox "recherche terminée"
    End Sub
    Merci de votre aide
    cordialement
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 940
    Points : 28 938
    Points
    28 938
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Ne serait-ce pas plus simple de passer par l'insertion de la formule que tu transformes en valeur ?
    Exemple d'une formule placée dans la plage C2:C20 de la feuille nommée [Resultat] effectuant une recherche à l'aide de RECHERCHEV dans la plage $A$2:$F$201 de la feuille [db]. Comme la fonction est imbriquée dans un SIERREUR, le texte Pas trouvé s'affiche en cas d'échec.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub ChercheValeur()
     With ThisWorkbook.Worksheets("Resultat").Range("C2:C20")
     .Formula = "=IFERROR(VLOOKUP(A2,db!$A$2:$F$201,2,FALSE),""Pas trouvé"")"
     .Value = .Value ' Conserve la valeur
     End With
    End Sub

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 81
    Points : 50
    Points
    50
    Par défaut
    Bonjour Phillipe
    Merci pour la reponse .
    Par contre votre code fait presque la meme chose que le mien .Mais mon resultat je le veux en colonne B et non en C dans votre exemple.
    et ça ne répond pas à ma demande.
    Je me suis peut etre mal exprimé.
    je souhaite appliquer ce code à toutes les autres colonnes (par une bouche) mais pas uniquement pour le premier.
    ci-joint le resultat que je veux obtenir.
    Merci pour votre aide
    cordialment
    Fichiers attachés Fichiers attachés

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 940
    Points : 28 938
    Points
    28 938
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Par contre votre code fait presque la meme chose que le mien .Mais mon resultat je le veux en colonne B et non en C dans votre exemple.
    et ça ne répond pas à ma demande.
    C'est bien un exemple. A toi de l'adapter s'il te convient, c'est plus rapide qu'une boucle.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    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
    attention, il y a des rubriques qui ne sont pas séparées par des colonne vide!
    Fichiers attachés Fichiers attachés

  6. #6
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 81
    Points : 50
    Points
    50
    Par défaut
    Bonjour rdurupt
    Vraiment merci ça l'aire de marcher.
    je vais essayer des contre exemple.
    mille merci à vous et à Phillipe aussi
    bonne journée

  7. #7
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 81
    Points : 50
    Points
    50
    Par défaut
    Bonjour à tous,
    Je me permets de revenir vers vous car j'ai un probleme dans ma recherche V par macro excel.
    En effet ma recherche V faite par macro ne donne pas les memes resultats que ma recherche V fait manuellement(qui est la bonne)
    Je souhaiterai avoir les memes resultats dans les 2 cas ,c'est à dire avoir les resultats de l'onglet rechercheV manuelle.
    Je vous envois ci-joint dans 2 onglets differents mes resultats obtenus dans les 2 cas.
    Est ce que quelqu'un aurait une idée de comment adapter ma macro pour obtenir les memes resultats .
    NB:ma clé de recherche est la colonne A.
    Je veux que lorsque j'ai des "non present" dans pour ma clé de recherche (cf colonne B) que je puisse avoir des "non present " dans les autres colonnes .(exactement comme l'onglet recherchev manuelle).
    A la place des #N/A meme si j'ai des vides ce n'est pas grave.
    En vous remerciant de votre aide par avance.
    cdt
    sakhob
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Equivalent recherchev, sous vba, entre deux fichiers et avec plusieurs critères
    Par Gallinettechouette dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 29/07/2013, 13h01
  2. probleme insertion table sous word en VBA
    Par hamster. dans le forum VBA Word
    Réponses: 4
    Dernier message: 11/06/2008, 16h06
  3. probleme de dll sous vba
    Par deubelte dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/05/2007, 10h01
  4. ptit probleme combobox sous vba/excel
    Par bandito dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/10/2006, 09h34
  5. [VBA-E] probleme de couleur sous visual basic
    Par clarkk dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 28/07/2006, 10h19

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