MsgBox valeur textbox n'existe pas déjà
Bonjour et Bonne Année à tous
j'ai crée un Userform pour saisir automatiquemet des données clients /distributeurs avec adresses ...etc
serait it possible q'un MsgBox apparaisse si je saisi la raison sociale d'un client qui existe déjà dans mon tableau en l’occurrence dans la colonne F, tout en m'indiquant le distributeur avec lequel il est en relation (Colonne A)
Merci d'avance.
Private Sub CmbValider_Click()
Dim dl As Integer
dl = Application.WorksheetFunction.CountA(Sheets("TRI avec code client").Range("$A:$A")) + 1
Sheets("TRI avec code client").Range("A" & dl) = ComboBox1.Value
Sheets("TRI avec code client").Range("B" & dl) = ComboBox2.Value
Sheets("TRI avec code client").Range("C" & dl) = ComboBox3.Value
Sheets("TRI avec code client").Range("D" & dl) = ComboBox6.Value
Sheets("TRI avec code client").Range("E" & dl) = ComboBox5.Value
Sheets("TRI avec code client").Range("F" & dl) = TxtRaison.Value
Sheets("TRI avec code client").Range("G" & dl) = TextDate.Value
Sheets("TRI avec code client").Range("H" & dl) = TextDurée.Value
Sheets("TRI avec code client").Range("I" & dl) = TextNuméro.Value
Sheets("TRI avec code client").Range("J" & dl) = ComboBox7.Value
Sheets("TRI avec code client").Range("K" & dl) = ComboBox8.Value
ComboBox1.Value = ""
ComboBox2.Value = ""
ComboBox3.Value = ""
ComboBox5.Value = ""
ComboBox6.Value = ""
ComboBox7.Value = ""
ComboBox8.Value = ""
TxtRaison.Value = ""
TextDate.Value = ""
TextDurée.Value = ""
TextNuméro.Value = ""
End Sub
Private Sub ComboBox2_Change()
Sheets("Feuil9").Range("M17").Value = ComboBox2.Value
If Sheets("Feuil9").Range("M17").Value <> "" Then
ComboBox3.RowSource = "Liste_Commune"
End If
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
Private Sub TxtRaison_Change()
End Sub
Private Sub UserForm_Initialize()
ComboBox1.List = Sheets("Distributeur").Range("TBL_Distributeur[Liste distributeurs]").Value
ComboBox2.RowSource = "Liste_Villes"
ComboBox6.RowSource = "Mode_de_gestion"
ComboBox5.RowSource = "Nature_contrat"
ComboBox7.RowSource = "Affichage_couleurs"
ComboBox8.RowSource = "Distr_carb"
End Sub
Bonjour Nismo,
(code] 'la parenthèse gauche au lieu du [ est juste pour que te montrer le texte de la balise
Sub Essai()
'mettre le code VBA ici, et de préférence un code VBA avec indentation ! ;)
End Sub
(/code] 'idem
* la 1ère balise est une balise ouvrante ; signification : « le texte placé à la suite doit être présenté comme du code VBA »
* la 2ème balise est une balise fermante ; signification : « fin du texte à présenter comme du code VBA »
* on reconnaît une balise fermante car son nom débute par un caractère slash = barre oblique : « / »
* à l'inverse, une balise dont le nom ne commence pas par un slash est une balise ouvrante
autre exemple : (b]texte en gras(/b]
* la balise ouvrante dont le nom est b signifie : « bold = gras : texte à mettre en gras »
* la balise fermante est donc /b : « fin de gras »
dhany
@Nismo
lis d'abord mon post précédent, puis celui-ci.
j'ai réécrit ainsi ton code VBA (avec mise entre balises de code, et indentation !
Private Sub UserForm_Initialize()
ComboBox1.List = Worksheets("Distributeur").Range("TBL_Distributeur[Liste distributeurs]")
ComboBox2.RowSource = "Liste_Villes"
ComboBox6.RowSource = "Mode_de_gestion"
ComboBox5.RowSource = "Nature_contrat"
ComboBox7.RowSource = "Affichage_couleurs"
ComboBox8.RowSource = "Distr_carb"
End Sub
Private Sub CmbValider_Click()
Dim dl As Integer, i As Byte
With Worksheets("TRI avec code client")
dl = Application.WorksheetFunction.CountA(.Columns("A")) + 1
With .Range("A" & dl)
.Value = ComboBox1
.Offset(, 1) = ComboBox2
.Offset(, 2) = ComboBox3
.Offset(, 3) = ComboBox6
.Offset(, 4) = ComboBox5
.Offset(, 5) = TxtRaison
.Offset(, 6) = TextDate
.Offset(, 7) = TextDurée
.Offset(, 8) = TextNuméro
.Offset(, 9) = ComboBox7
.Offset(, 10) = ComboBox8
End With
End With
For i = 1 To 8
If i <> 4 Then Controls("ComboBox" & i).Value = ""
Next i
TxtRaison = "": TextDate = "": TextDurée = ""
TextNuméro = ""
End Sub
Private Sub ComboBox2_Change()
Worksheets("Feuil9").[M17] = ComboBox2
If ComboBox2 <> "" Then
ComboBox3.RowSource = "Liste_Commune"
End If
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
si dans ton code initial tu as oublié ComboBox4.Value = ""
, alors enlève le test inclus dans la boucle For :
For i = 1 To 8
Controls("ComboBox" & i).Value = ""
Next i
oui, j'ai bien utilisé une 2ème mise entre balises de code (on n'arrête pas l'progrès, hein ?
par contre, j'ai pas fait ta demande, car sans fichier, ça m'dit pas trop.
dhany
Bonjour Dhan
Je te remercie pour ton aide
j'ai joint le fichier comme demandé
Cordialement
Bonjour Dhan
Je te remercie pour ton aide
j'ai joint le fichier comme demandé
cordialement
Bonjour Dhan
Je te remercie pour ton aide
j'ai joint le fichier comme demandé
cordialement
@Nismo
j'ai vu ton fichier, mais il est vraiment trop brouillon, et tout est mélangé !
* un module de classe vide et inutile
* 14 modules, dont 3 sont vides : Module3 ; Module4 ; Module5 ➯ compter 11 modules, mais vu leur contenu, c'est encore trop !
* ton module ThisWorkbook est vide, mais tu as une sub Workbook_Open() dans Module2 !
* tu as un classeur de 13 feuilles (dont beaucoup sont cachées), et dans Module1, ta sub Valider() fait référence à une feuille inexistante "feuil9" ! tu as peut-être confondu avec cette feuille dont le CodeName est "Feuil9" ? si oui, son nom est "Feuil2" ; une seule cellule est utilisée : H9, qui contient la formule : =100*12 ➯ résultat : 1200 ; alors quand ta sub Valider() lit les cellules B3, D3, F3 qui sont vides, j'suis pas vraiment sûr qu'ce soit la bonne feuille non plus !
* dans Module1, ta sub Quitter() utilise un 2ème Application.DisplayAlerts = False au lieu de Application.DisplayAlerts = True
* dans Module7, ta sub clear() utilise Target alors que c'est pas une sub événementielle ; et l'nom d'la sub est un mot-clé VBA !
* une autre sub clear() dans Module6 ; Module8 (tu les collectionne ?
* dans Module9, ta sub test() utilise ComboBox1 de UserForm1 ; idem pour ComboBox2 et ComboBox3 ; il semble que ce code aurait dû être dans UserForm1, mais si vraiment tu veux tester tes ComboBox de UserForm1 à partir d'un module, tu dois alors les préfixer ainsi : UserForm1.ComboBox1.
* dans Module10 : une sub événementielle Worksheet_Change() !
* dans Module13 : une sub vide et événementielle Zonecombinée4_QuandChangement()
* tu as toute une flopée de noms définis, dont plusieurs contiennent des références invalides !
après avoir dressé une liste non exhaustive des anomalies, j'arrête là, et je laisse la place à un autre intervenant.
bonne chance pour la suite !
dhany