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 'vérification'


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 23
    Par défaut problème macro 'vérification'
    Salut à tous, j'ai un petit probléme avec mon code.
    Ma vérification ne marche pas,il me trouve jamais de référence existance.
    Quelq'un pourrait me dire ou est l'erreur?

    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
    27
    28
    29
    30
    31
    32
    33
    Private Sub ComboBox3_Change()
     
         If ComboBox3 = "" Then Exit Sub
         mot = "00000"
        valeurAdditionee = Mid(TextBox3, 1, InStr(TextBox3, "D") - 1)
        reste = Mid(TextBox3, InStr(TextBox3, "D"))
        valeurAdditionee = Val(valeurAdditionee) + Val(ComboBox3)
        TextBox4 = Left(mot, Len(mot) - Len(valeurAdditionee)) & valeurAdditionee & reste
        'vérification sérial'
      RefDebut = TextBox3.Value
      nbRef = ComboBox3.Value
      Set zoneDesRef = Range("B4:B2000,D4:D2000")
      For Each cellule In zoneDesRef
        For i = 0 To nbRef
            numNouvelleRef = Val(Mid(RefDebut, 1, InStr(TextBox3, "D"))) + i
     
            longNum = Len(numNouvelleRef)
            refATrouver = Left(RefDebut, 1) & Left(mot, Len(mot) - Len(valeurAdditionee)) & valeurAdditionee & reste & numNouvelleRef
            If cellule.Value = refATrouver Then
                trouver = "OUI"
                Exit For
            End If
        Next
        If trouver = "OUI" Then
            Exit For
        End If
    Next
     
    If trouver = "OUI" Then
        MsgBox ("Une référence existante a été trouvée")
        Unload sérial
    End If
    End Sub
    A+

  2. #2
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Slt, rider18
    je suis pas un pro vba mais une chose me trouble en regardant vite fait ton code tu as mis:
    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
      If cellule.Value = refATrouver Then
                trouver = "OUI"
                Exit For
            End If
        Next
        If trouver = "OUI" Then
            Exit For
        End If
    Next
     
    If trouver = "OUI" Then
        MsgBox ("Une référence existante a été trouvée")
        Unload sérial
    End If
    End Sub
    Pourquoi pas Directement dans ta boucle et supprimer le dernier If:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
      If cellule.Value = refATrouver Then
                trouver = "OUI"
                MsgBox ("Une référence existante a été trouvée")
                Unload sérial
            'Permet de sortir de la macro     
                Goto fin           
             End If
     
        Next
    Next
    fin:
    End Sub
    Ensuite vérifie Comment sont déclarées tes variables?

    A+

  3. #3
    Membre expérimenté
    Inscrit en
    Juillet 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 239
    Par défaut
    Sans aller trop profond dans la compréhension du code , les lignes suivantes devraient être vérifiées:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
       If ComboBox3 = "" Then Exit Sub
    ......./.....
     nbRef = ComboBox3.Value
         For i = 0 To nbRef
    quelle est la différence entre ComboBox3 et ComboBox3.Value . Vérifies que l'on ne sort pas systèmatiquement avec le exit sub.

    Met un flag pour vérifier la valeur de nbRef

  4. #4
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 23
    Par défaut
    salut, merci de m'aider. j'ai essayer de fais quelque truc mes ça marche pas!
    j'ai pas compris pour le flag?
    J'ai mis un fichier.
    Je débute en vba.
    Fichiers attachés Fichiers attachés

  5. #5
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Bjr,
    en fait si j'ai bien compris tu veux faire une recherche sur la valeur de La textbox 4 ?
    Pour le moment c normal que le code ne trouve rien du fait qu'il cherche une valeur qui n'existe pas dans la feuille.
    je m'explique:
    Tu fais une recherche sur ce s/n: 00233D24193 alors que pour le code le s/n est égale à 000233D24193231 donc forcément il trouve pas. Tout d'abord dans ton code remplace ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    'ici  valeurAdditionee = 2
    valeurAdditionee = Val(valeurAdditionee) + Val(ComboBox3)
    par cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ' ici valeurAdditionee = 233 il me semble que c bon
    valeurAdditionee = Val(vaInStrleurAdditionee) + Val(ComboBox3)
    du coup textbox4 = 00233D24193 comme dans l'exemple.
    Si tu veux savoir si cette référence existe dans ta feuille alors voici le code après modifications:
    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
     
    Private Sub ComboBox3_Change()
     
     If ComboBox3 = "" Then Exit Sub
        mot = "00000"
        vaInStrleurAdditionee = Mid(TextBox3, 1, InStr(TextBox3, "D") - 1)
        reste = Mid(TextBox3, InStr(TextBox3, "D"))
        valeurAdditionee = Val(vaInStrleurAdditionee) + Val(ComboBox3)
        TextBox4 = Left(mot, Len(mot) - Len(valeurAdditionee)) & valeurAdditionee & reste
     
     
      Set zoneDesRef = Range("B4:B2000,D4:D2000")
     
      For Each cellule In zoneDesRef
     
            If cellule.Value = TextBox4.Value Then
                MsgBox ("Une référence existante a été trouvée")
                Exit For
            End If
     
     Next cellule
     
    End Sub
    Essaye et dis moi si c bon chez moi c ok.
    A+

  6. #6
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 23
    Par défaut
    Merci rvtoulon de m'avoir aider ça marche nickel.
    J'aurais une encore une question.
    Je voudrais savoir si on peut figer le "D"? En faite quand je tappe le "D" je veut qu'il soit tourjour en majuscule.Parce que si je met le "d" en minuscule le code bloque.

    A+

  7. #7
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Boinsoir,

    le "D" uniquement ou, plus généralement, toute lettre ?

  8. #8
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 23
    Par défaut
    Salut ucfoutu .Je voudrais trois lettres le "D" "Y" "H".

  9. #9
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bon,

    je crois que tu ne peux avoir que l'une de ces lettres, le reste étant des chiffres....
    On va partir de cette hypothèse-là ====>>>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ComboBox3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
     KeyAscii = Asc(UCase(Chr(KeyAscii)))
    End Sub
    Si finalement, tu peux avoir également des lettres en minuscules (autres que celles indiquées) tu dis et j'affine -mais je crois que ce ne sera pas nécessaire -...
    Tu dis (réponds vite car je ne vais pas tarder à faire dodo...)

    EDIT :
    Bon... Morphée m'appelle avec insistance et j'ai les yeux qui commencent à piquer ...
    Voilà si, par contre, tu peux avoir en minuscules d'autres lettres (bien que je ne le pense pas) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub ComboBox3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
     Select Case Chr(KeyAscii)
       Case "d", "y", "h"
          KeyAscii = Asc(UCase(Chr(KeyAscii)))
     End Select
    End Sub

  10. #10
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 23
    Par défaut
    Merci ucfoutu ça marche

    A+

  11. #11
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 23
    Par défaut
    salut a tous, je revient sur mon premier problème "la vérification".Le code que ma passer rvtoulon vérifie que dans les cellules "B4"et "D4" mais je voudrais que ça vérifie entre.
    Explication:"B4"-->00235D24193 "D4" --->00237D24193.Dans la vérification, je veux trouver le 00236D24193.J'ai essayer de faire un code mais il me trouve toujour une référence existance.
    Quelqu'un a une idée?
    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
    27
    28
    Private Sub ComboBox3_Change()
     
     If ComboBox3 = "" Then Exit Sub
        mot = "00000"
        valeurAdditionee = Val(Mid(TextBox3, 1, InStr(TextBox3, "D") - 1)) + Val(ComboBox3 - 1)
        reste = Mid(TextBox3, InStr(TextBox3, "D"))
        TextBox4 = Left(mot, Len(mot) - Len(valeurAdditionee)) & valeurAdditionee & reste
       'vérification sérial 0000D24193'
      Set zoneDesRef = Range("B4:B2000,D4:D2000")
      For Each cellule In zoneDesRef
      nbRef = ComboBox3.Value
      numNouvelleRef = Val(RefvaInStrleurAdditionee) + i
      longNum = Len(numNouvellRef)
      refATrouver = Left(mot, Len(mot) - Len(valeurAdditionee)) & valeurAdditionee & reste & numNouvellRef & RefvaInStrleurAdditionee
      For i = 0 To nbRef
            If cellule.Value = refATrouver Then
            trouver = "oui"
            Exit For
    End If
        Next
           If trouver = "oui" Then
             Exit For
        End If
    Next
                MsgBox ("Une référence existante a été trouvée")
     
     
    End Sub
    Fichiers attachés Fichiers attachés

  12. #12
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Bjr,
    Il me semble que nous avons répondu a ta demande du départ?
    Ta nouvelle demande n'était pas précisée....
    Bref, Tu fais une recherche de ce s/n: 00236D24193 dans la plage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    zoneDesRef = Range("B4:B2000,D4:D2000")
    . OK?

    Ce s/n n'existe pas dans ta base donc normalement tu ne dois pas avoir de message.
    Mais,c'est normal qu'il dise qu'il trouve une référence parce que tu lui demande de le faire car le msgbox est après les IF.

    Modifie la première partie du code que je t'ai donné comme tu l'as fait et garde la partie finale à partir du Set zoneDesRef ça doit marcher...

    A+

    EDIT: A quoi sert trouver ="oui" ? (à mon avis à rien...)
    Je repose ma question : Tu veux comparer le contenue de chaque cellule de la plage zoneDesRef avec la valeur de la textbox4? (Je mettrais le nouveau code après...)

  13. #13
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 23
    Par défaut
    salut, ce que je recherche a faire, c'est quand je met le nombre de pièce avec la combobox3,je veux que ça vérifie les doublons dans 'set zoneDesRef'.
    Pour les "oui" j'ai repris un code d'une autre reférence de sérial qui marche et j'ai essayer de faire quelque chose avec.
    regarde ce fichier .
    A+
    Fichiers attachés Fichiers attachés

  14. #14
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Slt,
    avec les modifications que tu as apporté je mettrais ce code:
    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
     
    Private Sub ComboBox3_Change()
     
     If ComboBox3 = "" Then Exit Sub
        mot = "00000"
        valeurAdditionee = Val(Mid(TextBox3, 1, InStr(TextBox3, "D") - 1)) + Val(ComboBox3 - 1)
        reste = Mid(TextBox3, InStr(TextBox3, "D"))
        TextBox4 = Left(mot, Len(mot) - Len(valeurAdditionee)) & valeurAdditionee & reste
       'vérification sérial 0000D24193'
      Set zoneDesRef = Range("B4:B2000,D4:D2000")
     
      For Each cellule In zoneDesRef
            If cellule.Value = TextBox4 Then
            MsgBox ("Une référence existante a été trouvée")
            Exit For
            End If
      Next
    End Sub
    A+

  15. #15
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 23
    Par défaut
    Merci rvtoulon.Ton code marche bien .
    Il faut que je cherche une autre solution pour gérer mes doublons.
    A+

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

Discussions similaires

  1. Problème Macro Excel - vérification liste de mails via mailtester.com
    Par beenosse dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/02/2019, 16h51
  2. Problème macro vérification TVA
    Par almac7 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/11/2012, 15h13
  3. problème de vérification formulaire (non bloquante)
    Par Florent08800 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/05/2006, 12h02
  4. [VBA-E] Problème macro excel
    Par pontus21 dans le forum Macros et VBA Excel
    Réponses: 32
    Dernier message: 19/05/2006, 18h38
  5. problème de vérification formulaire
    Par Le Rebel dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/03/2006, 13h10

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