XL 2010 Verifier contenu textbox

cp4

XLDnaute Barbatruc
Bonjour,:)

Je voudrais vérifier que le contenu d'une textbox est bien constitué de 13 chiffres et que celui-ci n'est pas déjà présent dans ma base. J'ai fait ce code mais apparemment ne fonctionne pas.
VB:
Private Sub TextBox1_Exit(ByVal cancel As MSForms.ReturnBoolean)
ligne = WS.Range("A" & Rows.Count).End(xlUp).Row + 1
         Set Rng = WS.Range("A2:G" & ligne)
Set X = Rng.Columns(1).Find(What:=Val(code), LookAt:=xlWhole)

   If Len(TextBox1) < 13 Then
      MsgBox ("Vous devez saisir un numéro de code valide." & Chr(10) & Chr(10) & "Pour cela, saisissez 13 chiffres.")
      cancel = True
      End If
If Not X Is Nothing Then
            MsgBox code & " existe déjà!"
            Me.TextBox1 = "": Me.TextBox1.SetFocus
           Exit Sub
           Else
           Me.TextBox2.SetFocus
End If
End Sub
En vous remerciant. Merci aussi pour vos critiques, commentaires, suggestions concernant ce fichier dans son ensemble.:) Le but de ce fichier est d'ajouter, supprimer ou modifier une petite bd de produits.
 

Pièces jointes

  • Produits.xlsm
    30 KB · Affichages: 37

cp4

XLDnaute Barbatruc
Bonsoir le fil, le forum

@cp4

Suggestions
Faire ses emplettes dans les archives du forum avant de poser sa question ;)
Si cela a déjà était fait le signaler alors dans le premier message qui inaugure la discussion ;)
Je ne pose de questions qu'après avoir fait mes emplettes sur le forum.
Je n'accepte que les aides gracieuses, pas à contre cœur car elles ont un goût amers.
Merci.
 

Staple1600

XLDnaute Barbatruc
Re, Bonsoir cp4, Lone-Wolf

@cp4
Susceptible? ;)
J'ai pourtant mis des emoticones.
Si tu n'indiques pas que tu as fait des recherches, on n'est pas censé le savoir, non ?

PS: Puisque le forum est peuplé de bénévoles, l'aide est forcément gracieuse. ;)
Et tous ceux qui prennent le temps de répondre le font de bon cœur.
(Sinon faudra m'expliquer l’intérêt d'être XLDnaute ? )
 

cp4

XLDnaute Barbatruc
Bonsoir cp4 :), re Jean Marie ;)

@cp4

La macro fonctionne chez moi. Mais la ligne pour la largeur des colonnes de la Listbox cause problème. J'ai ajouté en dur celles-ci pour faire le test.
Merci beaucoup Lone:),

ça me rassure que ça a fonctionné chez-toi.
Mon code avait fonctionné mais ne fonctionnait plus. Je ne comprenais pas le pourquoi de la chose, c'est pour cela qu'après recherche sur le forum j'ai ouvert cette discussion.

Merci beaucoup. Je reteste pour voir.;)
 

Staple1600

XLDnaute Barbatruc
Re

@cp4
Maintenant passons aux "critiques" ;)
(c'est toi qui les a commandé cf ton premier message)
Normalement ceci
If IsNull(ListBox1.Value) = True Then MsgBox "Rien à supprimer!":
peut simplement s'écrire
If IsNull(ListBox1) Then MsgBox "Rien à supprimer!":

Et sinon une autre suggestion pour ceci
.Cells(ligne, 1).Value = Me.TextBox1.Text
.Cells(ligne, 2).Value = Me.TextBox2.Value
.Cells(ligne, 3).Value = Me.TextBox3.Value
.Cells(ligne, 4).Value = Me.TextBox4.Value
.Cells(ligne, 5).Value = Me.TextBox5.Value
.Cells(ligne, 6).Value = Me.TextBox6.Value
.Cells(ligne, 7).Value = Me.ComboBox1.Value

Tu peux écrire un truc du genre
.Cells(ligne,1).Resize(,7)=Array(TextBox1,TextBox2,TextBox3,TextBox4,TextBox5,TextBox6,ComboBox1.Value)
 

cp4

XLDnaute Barbatruc
Re, Bonsoir cp4, Lone-Wolf

@cp4
Susceptible? ;)
J'ai pourtant mis des emoticones.
Si tu n'indiques pas que tu as fait des recherches, on n'est pas censé le savoir, non ?

PS: Puisque le forum est peuplé de bénévoles, l'aide est forcément gracieuse. ;)
Et tous ceux qui prennent le temps de répondre le font de bon cœur.
(Sinon faudra m'expliquer l’intérêt d'être XLDnaute ? )
Non, je ne suis pas susceptible. Mais après pas mal de temps passé à lire des discussions dont plusieurs auxquelles tu as mis la même réflexion. Là, en la recevant à mon tour ça m'a agacé. Sinon, je sais très bien que ce forum est peuplé de bénévoles formidables. Je ne suis ni susceptible, ni rancunier.
Peux-tu m'indiquer, à quel niveau dans la charte, il faut indiquer qu'on a bien effectué une (des) recherche(s).
Mon code avait fonctionné. comme il ne fonctionnait plus, je me suis dis que j'ai fait une erreur que je n'arrive pas à déceler. D'où mes recherches et ensuite le montage du fichier joint et l'ouverture de cette discussion.

Allez pas grave, passons à autre chose.:D

Merci beaucoup JM;):p
 

Lone-wolf

XLDnaute Barbatruc
Re

Pour la méthode Find il faut supprimer +1 : ligne = .Range("A" & Rows.Count).End(xlUp).Row
Pour l'ajout des données : lig = .Range("A" & Rows.Count).End(xlUp).Row +1

Tu as mis code = ListBox1.ListIndex. Mais vu que tu te base sur la colonne 1, il faut mettre TextBox1.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

@cp4
Tu as vu mes dernières suggestions (code VBA) ?

PS: Ça coûte rien au demandeur de mettre dans son premier message des phrases du genre, non ? ;)
"Après avoir cherché dans le forum, je n'arrive pas à résoudre le problème suivant etc...
"Malgré mes recherches ici et sur Go.g.e, je suis bloqué etc.."
 

cp4

XLDnaute Barbatruc
Re

@cp4
Maintenant passons aux "critiques" ;)
(c'est toi qui les a commandé cf ton premier message)
Normalement ceci
If IsNull(ListBox1.Value) = True Then MsgBox "Rien à supprimer!":
peut simplement s'écrire
If IsNull(ListBox1) Then MsgBox "Rien à supprimer!":

Et sinon une autre suggestion pour ceci
.Cells(ligne, 1).Value = Me.TextBox1.Text
.Cells(ligne, 2).Value = Me.TextBox2.Value
.Cells(ligne, 3).Value = Me.TextBox3.Value
.Cells(ligne, 4).Value = Me.TextBox4.Value
.Cells(ligne, 5).Value = Me.TextBox5.Value
.Cells(ligne, 6).Value = Me.TextBox6.Value
.Cells(ligne, 7).Value = Me.ComboBox1.Value

Tu peux écrire un truc du genre
.Cells(ligne,1).Resize(,7)=Array(TextBox1,TextBox2,TextBox3,TextBox4,TextBox5,TextBox6,ComboBox1.Value)
Merci beaucoup. Là, tu fonctionnes normalement. Je retrouve les compétences que je n'ai pas.
J'avoue que je ne connais pas du tout ce style d'écriture de code.
Je te suis humblement reconnaissant.

Merci beaucoup.;)
 

cp4

XLDnaute Barbatruc
Re

Pour la méthode Find il faut supprimer +1 : ligne = .Range("A" & Rows.Count).End(xlUp).Row
Pour l'ajout des données : lig = .Range("A" & Rows.Count).End(xlUp).Row +1

Tu as mis code = ListBox1.ListIndex. Mais vu que tu te base sur la colonne 1, il faut mettre TextBox1.
Merci Lone-wolf, je doutais bien que j'avais fait des erreurs. Merci, beaucoup.:)
Et dans cette macro Private Sub TextBox1_Exit(ByVal cancel As MSForms.ReturnBoolean), il n'y a pas d'erreurs?

Très gentil.;)
 

Discussions similaires

Réponses
5
Affichages
398
Réponses
2
Affichages
140
Réponses
17
Affichages
311

Statistiques des forums

Discussions
312 104
Messages
2 085 332
Membres
102 863
dernier inscrit
Selemani