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 macro rechercheV excel [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 89
    Par défaut Problème macro rechercheV excel
    Bonjour à tous,

    J'ai un légé probleme avec mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    For i = 4 To Sheets("Test").UsedRange.Rows.Count
       If IsNumeric(Sheets("Test").Cells(i, "K").Value) Then
           For J = 1 To Sheets("Base de donnée").UsedRange.Rows.Count
               If Sheets("Base de donnée").Cells(J, "A").Value = Sheets("Test").Cells(i, "k").Value Then
                    Sheets("Test").Cells(i, "s") = Sheets("Base de donnée").Cells(J, "B").Value
                   Exit For
               End If
           Next J
       End If
    Next i

    Dans la feuille test, colonne K, j'ai des valeurs ex: "08001 test", "08003 Test1", "08004 Test4" etc...

    Dans ma feuille Base de données, colonne A, j'ai des valeurs ex: 08001, 08002, 08003 ..........

    Donc la différence, c'est que dans la première feuille, il y a du texte rattaché au numéro.

    Je veux être capable de faire une recherche sans qu'il ne tienne compte des lettes. Seulement les numéros.

    Comment faire s.v.p

    Merci pour votre aide.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonsoir,
    essaies ceci (pas testé)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Val(Sheets("Base de donnée").Range("A" & J).Value) = Val(Sheets("Test").Range("K" & i).Value)

  3. #3
    Membre éclairé Avatar de Duddy
    Homme Profil pro
    Agent de maitrise
    Inscrit en
    Novembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Agent de maitrise
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 257
    Par défaut
    Bonsoir le forum,

    Pourquoi ne pas tester ta cellule de ta feuille "test" en reprenant les valeurs de la cellule de la feuille "Base de données".

    Je le vois ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    For i = 4 To Sheets("Test").UsedRange.Rows.Count
       If IsNumeric(Left(Sheets("Test").Cells(i, "K"),5) Then
           For J = 1 To Sheets("Base de donnée").UsedRange.Rows.Count
               If Sheets("Base de donnée").Cells(J, "A").Value = left(Sheets("Test").Cells(i, "k"),Len(Sheets("Base de donnée").Cells(J, "A")) Then
                    Sheets("Test").Cells(i, "s") = Sheets("Base de donnée").Cells(J, "B").Value
                   Exit For
               End If
           Next J
       End If
    Next i
    à tester.

  4. #4
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 89
    Par défaut
    Bonjour,

    J'ai changé pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    For i = 4 To Sheets("Test").UsedRange.Rows.Count
       If IsNumeric(Sheets("Test").Cells(i, "K").Value) Then
           For J = 1 To Sheets("Base de donnée").UsedRange.Rows.Count
               If Val(Sheets("Base de donnée").Cells(J, "A").Value) = Val(Sheets("Test").Cells(i, "k").Value) Then
                    Sheets("Test").Cells(i, "s") = Sheets("Base de donnée").Cells(J, "B").Value
     
                   Exit For
               End If
           Next J
       End If
    Next i
    Mais négatif, ça ne donne pas le résult escompté.

    je viens de tester aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub CommandButton1_Click()
    For i = 4 To Sheets("Test").UsedRange.Rows.Count
       If IsNumeric(Left(Sheets("Test").Cells(i, "K"), 5)) Then
           For J = 1 To Sheets("Base de donnée").UsedRange.Rows.Count
               If Sheets("Base de donnée").Cells(J, "A").Value = Left(Sheets("Test").Cells(i, "k"), Len(Sheets("Base de donnée").Cells(J, "A"))) Then
                    Sheets("Test").Cells(i, "s") = Sheets("Base de donnée").Cells(J, "B").Value
                   Exit For
               End If
           Next J
       End If
    Next i
    End Sub
    Négatif, il ne donne aucun résultat, même si je laisse que le numéro de 5 caractères sans texte.

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    tu n'entre dans ta 2ème boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim i As Long, j As Long
     
    For i = 4 To Sheets("Test").UsedRange.Rows.Count
       If Val(Sheets("Test").Cells(i, "K").Value) > 0 Then
           For j = 1 To Sheets("Base de donnée").UsedRange.Rows.Count
               If Val(Sheets("Base de donnée").Cells(j, "A").Value) = Val(Sheets("Test").Cells(i, "k").Value) Then
                    Sheets("Test").Cells(i, "s") = Sheets("Base de donnée").Cells(j, "B").Value
                   Exit For
               End If
           Next j
       End If
    Next i

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour,
    Peut-être comme ç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
    Sub test()
    Dim CP As String
        With Sheets("Base de donnée")
        For i = 4 To Sheets("Test").UsedRange.Rows.Count
           CP = Trim(Left(Sheets("Test").Cells(i, k), 6))
           If IsNumeric(CP) Then
               For J = 1 To .UsedRange.Rows.Count
                   If Trim(.Cells(J, "A")) = CP Then
                        Sheets("Test").Cells(i, "s") = .Cells(J, "B").Value
                       Exit For
                   End If
               Next J
           End If
        Next i
        End With
    End Sub
    A+

  7. #7
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 89
    Par défaut
    Outch, Désolé, je viens de me rendre compte que parfois, je vois dans la cellule la valeur ex: "08331 08331 test"

    Dans ses cas la, ça ne fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim i As Long, j As Long
     
    For i = 4 To Sheets("Test").UsedRange.Rows.Count
       If Val(Sheets("Test").Cells(i, "K").Value) > 0 Then
           For j = 1 To Sheets("Base de donnée").UsedRange.Rows.Count
               If Val(Sheets("Base de donnée").Cells(j, "A").Value) = Val(Sheets("Test").Cells(i, "k").Value) Then
                    Sheets("Test").Cells(i, "s") = Sheets("Base de donnée").Cells(j, "B").Value
                   Exit For
               End If
           Next j
       End If
    Next i
    Bonsoir LeForestier

    Je vien de tester ton code, est j'ai cette erreur: Erreur d'exécution 1004, Erreur définie par l'application ou par l'objet.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CP = Trim(Left(Sheets("Test").Cells(i, k), 5))
    Quest-Ce que ça veut dire?

  8. #8
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    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
    16
    17
    Dim Kde
     
    With Sheets("Test")
        For i = 4 To .UsedRange.Rows.Count
            If Len(.Cells(i, "K").Value) > 0 Then
                Kde = Split(.Cells(i, "K").Value, " ")
                If IsNumeric(Kde(0)) Then
                    For J = 1 To Sheets("Base de donnée").UsedRange.Rows.Count
                        If Val(Sheets("Base de donnée").Cells(J, "A").Value) = Val(Kde(0)) Then
                             .Cells(i, "s") = Sheets("Base de donnée").Cells(J, "B").Value
                            Exit For
                        End If
                    Next J
                End If
            End If
        Next i
    End With

  9. #9
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    T'a tout dit maintenant...
    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
    Sub test()
    Dim CP As String
        With Sheets("Base de donnée")
        For i = 4 To Sheets("Test").UsedRange.Rows.Count
            CP = Sheets("Test").Cells(i, "k")
            For e = 1 To Len(CP)
                If Asc(Mid(CP, e, 1)) > 57 Then Exit For
            Next e
            CP = Trim(Left(CP, e - 1))
            If IsNumeric(CP) Then
                For J = 1 To .UsedRange.Rows.Count
                    If Trim(.Cells(J, "A")) = CP Then
                         Sheets("Test").Cells(i, "s") = .Cells(J, "B").Value
                        Exit For
                    End If
                Next J
            End If
        Next i
        End With
    End Sub
    A+

    Edit: pour l'erreur 1004 >> pas de guillemet à la colonne k
    Mercatog > Pas bon, y a deux espaces dans certain cas
    Edit2:
    Il y a des cellules vides, Left("",5) donne cette erreur
    Tu a tester ??

  10. #10
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 89
    Par défaut
    Super

    Un grand merci à mercatog et LeForestier pour votre aide.

    Tous fonctionne à merveille.

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

Discussions similaires

  1. [XL-2007] Problème macro VBA "Excel a cessé de fonctionner"
    Par MAD61141 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/01/2014, 20h02
  2. Problème pour lancer une macro dans Excel
    Par jujuf1 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 29/12/2008, 16h32
  3. Probléme de compatibilté macro vba excel 2007 vers 2002
    Par cedric59dk dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/03/2008, 10h55
  4. Macro RECHERCHEV entre 2 fichiers excel distincts
    Par paflolo dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 15/11/2006, 03h46
  5. [VBA-E] Problème macro excel
    Par pontus21 dans le forum Macros et VBA Excel
    Réponses: 32
    Dernier message: 19/05/2006, 18h38

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