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 :

[VBA-E]comparer contenu textbox et cellule


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut [VBA-E]comparer contenu textbox et cellule
    Bonjour, j'ai un petit souci avec un textbox
    je demande à l'utilisateur d'entrer une chaine de caractère afin de la comparer à la premiere ligne de chaque colonne de mon tableau
    pour ce faire j'ai fais ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    For i = 1 To NbColonne
        MsgBox (texte1)
        If TextBox1.Value = Cells(1, i).Value Then
            MsgBox (TextBox1.Value)
             'Selection.Delete Shift:=xlToLeft
        Else:
            MsgBox (faute)
            Erreur.Show
        End If
    Next i
    en sachant que NbColonne est le nombre de colonne que contien mon tableau

    le probleme est que ce programme me renvoi toujour dans le else même le texte taper dans la textbox est le meme que celui présent en W2 par exemple
    Le savoir est une arme alors soyons armés

  2. #2
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Pour un textbox, ce ne serait pas plutot :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If TextBox1.Text = Cells(1, i).Value Then

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    non meme probleme mais je me suis apercu que en mettant un chiffre à la place du i ca marchai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for i = 1 To NbColonne
        If TextBox1.Text = Cells(2, 23).Value Then
            MsgBox (TextBox1.Value)
            MsgBox (i)
        Else
    ...

    le probleme est que je veut le faire pour toute les cases et non une seule
    Le savoir est une arme alors soyons armés

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    j'ai pas tous compris mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If TextBox1.Text = Cells(1, i).Value Then
    fonctionne ... et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If TextBox1.Value = Cells(1, i).Value Then
    ne fonctionne pas ...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    non bbil les codes que tu as mis me renvoye vers else qui se situe juste apres. Pourtant je tape bien le même texte dans la textbox que celui présent en W2 (pour l'exemple)
    en revanche lorsque je fais ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    For i = 1 To NbColonne
        If TextBox1.Text = Cells(2, 23).Value Then '23 correspond à W
            MsgBox (TextBox1.Value)
            MsgBox (i)
             'Selection.Delete Shift:=xlToLeft
        Else:
            MsgBox (faute)
            Erreur.Show
        End If
    Next i
    je rentre dans le if et cela m'affiche bien 24 fois (NbCOlonne=24) mon textbox et la valeur de i pour chaque tour de boucle (donc de 1 à 24)


    J'ai trouvé la cause : la place du next mais cela nécessite une petite astuce qui me parait étrange !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    For i = 1 To NbColonne
        If TextBox1.Text = Cells(2, 23).Value Then
            MsgBox (TextBox1.Value)
            MsgBox (i)
             'Selection.Delete Shift:=xlToLeft
             i = i + 1
        Else:
            MsgBox (faute)
            Erreur.Show
        End If
        i = i - 1
    Next i
    l'idéal serait de mettre mon next avant le else mais quand je fais ca il me dis qu'il bloc if sans End If
    Le savoir est une arme alors soyons armés

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Normal ! Comme "papa" attend "maman", for attend next et if endif...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    For i = 1 To NbColonne 
        If TextBox1.Text = Cells(2, 23).Value Then '23 correspond à W 
            MsgBox (TextBox1.Value) 
            MsgBox (i) 
             'Selection.Delete Shift:=xlToLeft 
        Else: 
            MsgBox (faute)
            PasBon = true
            exit for
        End If 
    Next i 
     
    if pasBon then Erreur.Show
    Tu peux utiliser un autre boolean que PasBon

    A+

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    mince autant pour moi j'avais laisser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If TextBox1.Text = Cells(2, 23).Value Then '23 correspond à W
    et non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If TextBox1.Text = Cells(2, i).Value Then
    donc la il comparais que à une case (la case W2) et ca marchais mais quand je met i ca m'envoi à chaque fois sur le else (puis affiche Erreur )
    Le savoir est une arme alors soyons armés

  8. #8
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour à tous

    dans ton premier message tu indiques

    If TextBox1.Value = Cells(1, i).Value Then

    ensuite tu testes

    If TextBox1.Text = Cells(2, 23).Value Then

    tu es sur que tu testes les memes lignes dans les 2 cas ? ...


    bonne journée
    michel

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    c'est exact
    au début je m'étais trompé mais la je suis sur de moi le texte que je compare se trouve bien dans une des case de la ligne 2
    Le savoir est une arme alors soyons armés

  10. #10
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    rebonjour

    et quel est le resultat si tu fais tout simplement


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For i = 1 To NbColonne
    If TextBox1.Text = Cells(2, i).Value Then
    MsgBox (TextBox1.Value)
    MsgBox (i)
    Exit For
    End If
    Next i
    à mon avis le est mal placé car tu ne peuxjamais boucler jamais sur toutes les colonnes


    bonne journée
    michel

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    ca marche ce que tu me propose mais je n'arrive pas à ajouter une condition else (si l'utilisateur tape quelque chose qui n'hésiste pas )

    je voudrai juste afficher un textbox avec un message indiquant l'erreur
    Le savoir est une arme alors soyons armés

  12. #12
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    rebonjour

    dans ce cas tu peux tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    For i = 1 To NbColonne
        If TextBox1.Text = Cells(2, i).Value Then
            MsgBox (TextBox1.Value)
            MsgBox (i)
            Exit Sub
        End If
    Next i
     
    MsgBox (faute)

    bonne journée
    michel

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    pas bête le cout du end sub j'y avais pas pensé

    j'ai tester ca marche tres bien

    merci
    Le savoir est une arme alors soyons armés

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

Discussions similaires

  1. [VBA] verifier le contenu de plusieurs cellules avant impression
    Par franckla dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 21/10/2017, 13h24
  2. [VBA-E]Séparation contenu d'une cellule
    Par SybVicious dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/05/2007, 12h56
  3. [VBA]Copier le contenu d'une cellule x fois selon x
    Par fixou dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 19/04/2007, 23h58
  4. [VBA-E]Récuperer contenu d'1 cellule d'1 classeur a l'autre
    Par fabremel dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/03/2006, 16h09
  5. [VBA]Copier le contenu d'une cellule d'un autre classeur
    Par dudu59 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 01/02/2006, 17h08

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