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 :

Problème : Recherche de valeur sur Excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Août 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 14
    Par défaut Problème : Recherche de valeur sur Excel
    Bonjour à toutes et à tous

    je voudrai au fait savoir s'il est possible de coder en VBA, une application qui recherche dans un fichier2.xls une certaine valeur située dans un fichier1.xls En gros je choisis une celllule de fichier1.xls par exemple H2 et je veux savoir si elle ( son contenu ou sa valeur ) existe dans le fichier2.xls et qui surtout sort un résultat par exemple = 1 si cette valeur n'existe pas

    Ce code, je veux le taper dans une macro située dans le fichier1.xls.

    Merci infiniment de votre aide.

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 192
    Par défaut
    essaie avec une recherchev non?

  3. #3
    Membre averti
    Inscrit en
    Août 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 14
    Par défaut
    Citation Envoyé par sash6
    essaie avec une recherchev non?
    non c'est pas ce que je veux faire, je veux au fait savoir si une cellule par exemple A3 qui est dans le fichier1.xls existe dans le fichier2.xls, bien sur quand je dis existe je parle du contenu, et je voudrai faire sur pas mal de cellule du fichier1.xls et avoir un résultat pour chacun de la forme boolean

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 192
    Par défaut
    d'acc bah ce que tu pourrais faire c'est un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim DerniereLigne1, DerniereLigne2, lgcount As Integer
    Dim tbl, c as range
     
    DerniereLigne1 = windows(nomdetonfichier1)sheets("nomdelafeuille").Range("A65535").End(xlUp).Row
    DerniereLigne2 = windows(nomdetonfichier2)sheets("nomdelafeuille").Range("A65535").End(xlUp).Row
     
    Set tbl = Range(Cells(1, 1), Cells(DerniereLigne1, 1))
     
    For Each c In tbl
    For lgcount = 1 to derniereligne2
            If c.Value = range(cells(lgcount, 1), cells(lgcount, derniereligne)) Then msgbox "vrai"
    next
    Next c
    a voir j'suis pas sûr que ça va marcher ni si c'est la meilleure solution...

  5. #5
    Membre confirmé Avatar de Oh!Tofocus
    Profil pro
    Inscrit en
    Août 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 217
    Par défaut
    Salut à tous

    une autre solution dans le même style
    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 recherche()
    Dim zone As String
    Dim test As Range
    compteur = 0
    'positionner la valeur a chercher dans la cellule A1 de exel2.xls
    val_cherche = Range("a1").Value
     
    der_case = Workbooks("exel2.xls").Sheets("Feuil1").Range("A1").SpecialCells(xlCellTypeLastCell).Address
    zone = "$A$1:" & der_case
    For Each test In Workbooks("exel2.xls").Sheets("Feuil1").Range(zone)
    If test = val_cherche Then
    compteur = compteur + 1
    End If
    Next test
    MsgBox "il y a " & compteur & " fois la valeur: " & val_cherche & " dans la feuille 1 de exel2"
     
    End Sub
    ca marche chez moi avec EXEL 97
    A+

  6. #6
    Membre averti
    Inscrit en
    Août 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 14
    Par défaut
    Citation Envoyé par Oh!Tofocus
    Salut à tous

    une autre solution dans le même style
    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 recherche()
    Dim zone As String
    Dim test As Range
    compteur = 0
    'positionner la valeur a chercher dans la cellule A1 de exel2.xls
    val_cherche = Range("a1").Value
     
    der_case = Workbooks("exel2.xls").Sheets("Feuil1").Range("A1").SpecialCells(xlCellTypeLastCell).Address
    zone = "$A$1:" & der_case
    For Each test In Workbooks("exel2.xls").Sheets("Feuil1").Range(zone)
    If test = val_cherche Then
    compteur = compteur + 1
    End If
    Next test
    MsgBox "il y a " & compteur & " fois la valeur: " & val_cherche & " dans la feuille 1 de exel2"
     
    End Sub
    ca marche chez moi avec EXEL 97
    A+
    Merci pour vos réponses, je sais pas pourquoi ça marche pas.
    Je comprends pas exel2.xls dans ton code c'est le nom de mon fichier2.xls c'est l'endroit où je cherche ma valeur n'est ce pas ?
    j'ai essayé de m'inspirer j'ai un message d'errreur, " l'indice n'appartient pas à la selection"
    je comprends pas où est l'erreur, mais le pire c'est que même ton code j'ai du mal à le comprendre
    Merci quand même

  7. #7
    Membre averti
    Inscrit en
    Août 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 14
    Par défaut
    Je veux faire une fonction trouve qui pour chaque cellule allant de « H2 » à « Hi » de mon fichier1.xls me sort comme résultat vrai si cette valeur existe dans le BD.xls

    Voici les causes qui font que je dois creer une fonction trouve.
    Au début j'avais juste à taper ce code ( le premier ci dessous), mais quand ma base de projets n'est pas à jour ce qui arrive puisque je fais des exports le code ci dessus s'arrete de compiler lorsqu'il ne trouve pas le projet dans ma BaseProjets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Range("H2:H" & i).Select
        ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(RC[-1], BDxls!BaseProjets, 2, False)"
        Range("H2").Select
        Selection.AutoFill Destination:=Range("H2:H" & i), Type:=xlFillDefault
        Range("H2:H" & i).Select
    Le code ci-dessus n'est fiable que quand le projet existe dans ma base de données appellées BD. ce code ci dessus je le tape dans un fichier excel appellé Fichier1.xls.

    Et moi je dois arriver à faire tourner le code ci dessous pour contourner le probleme de compilation, car meme si ma base de données est incomplete je veux attribuer la valeur "Par défaut"

    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
      For j = 2 to i
     
     
        If trouve = vrai Then
        Range("H" & j).Select
        ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],BDxls!BaseProjets,2,FALSE)"
     
        Else
        Range("H" & j) = "Par défaut"
     
        End If
     
    j = j + 1
     
    Next

  8. #8
    Membre confirmé Avatar de Oh!Tofocus
    Profil pro
    Inscrit en
    Août 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 217
    Par défaut
    voici le code adapté avec quelques explications:
    il recherche la valeur de H1 dans la feuille1 du fichier fichier2.xls
    et met 1 en J1 si il le trouve au moins une fois.

    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 recherche()
    Dim zone As String
    Dim test As Range
    'initialise la case reponse 0 ou 1
    Range("J1").Value = 0
    'positionner la valeur a chercher dans la cellule H1
    val_cherche = Range("H1").Value
    'calcule la zone a tester dand la feuill1 de fichier2
    'si ta zone est fixe tu peux l'entrer directement ex: zone="$A$1:$C$30"
    der_case = Workbooks("fichier2.xls").Sheets("Feuil1").Range("A1").SpecialCells(xlCellTypeLastCell).Address
    zone = "$A$1:" & der_case
    'teste dans toute la zone la valeur rechercher
    For Each test In Workbooks("fichier2.xls").Sheets("Feuil1").Range(zone)
    If test = val_cherche Then
    'si la valeur de H1 est trouvée met 1 dans J1
    Range("J1").Value = 1
    GoTo suite
    End If
    Next test
    suite:
     
    End Sub
    la valeur de l'on trouve est donc dans J1: 0=n'existe pas 1=existe

    a toi d'integrer le code dans ta routine

    attention pour ton codage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
      For j = 2 to i
    '
    '
    '
     
        j = j + 1
      Next
    incremente j de 2 en 2 ce n'est peut être pas de but recherché
    j = j + 1 & FOR ...NEXT font double effet
    bon courage

Discussions similaires

  1. [Débutant] Problème de recherche de valeur sur variable multiple
    Par Vinces007 dans le forum C#
    Réponses: 7
    Dernier message: 02/08/2013, 09h08
  2. Recherche de valeur sous EXCEL
    Par CélineM dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 23/09/2009, 18h00
  3. [XL-2007] Recherche de valeurs dans excel
    Par HADIA dans le forum Excel
    Réponses: 2
    Dernier message: 26/07/2009, 10h26
  4. Problème : Recherche de valeur sur Excel
    Par tzehani dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 07/08/2007, 16h04
  5. Rechercher une valeur dans excel avec VBA
    Par kebab666 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/06/2007, 10h00

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