Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Optimiser un userform qui renseigne un tableau

saggigo

XLDnaute Occasionnel
bonjour la team.
voilà j'ai un userform qui me renseigne un tableau (par ligne) , mais lorsque je ne remplie pas toutes les cases il me sort le message de débogage.
j'aimerais insérer des sauts de telle manière que si:

".Range("I" & X) = Me.Txb_Contact_2" est vide, je saute vers la ligne : ".Range("O" & X) = Me.Cmb_Besoin"

ou si la ligne :
".Range("L" & X) = Me.Txb_Contact_3" je saute vers la ligne : ".Range("O" & X) = Me.Cmb_Besoin"

Voici le code:

Private Sub Valider_Click()
Dim X As Long
If Me.Txb_Client = "" Then
MsgBox "Il faut un client !", vbCritical, "Erreur saisie"
Me.Txb_Client.SetFocus
Exit Sub
End If
If Me.Cmb_Sect_Acti = "" Then
MsgBox "Il faut un secteur d'activité !", vbCritical, "Erreur saisie"
Me.Txb_Client.SetFocus
Exit Sub
End If
If Me.Cmb_Ville = "" Then
MsgBox "Il faut une wilaya !", vbCritical, "Erreur saisie"
Me.Txb_Client.SetFocus
Exit Sub
End If
If Me.Txb_Adresse = "" Then
MsgBox "Il faut une une adresse !", vbCritical, "Erreur saisie"
Me.Txb_Client.SetFocus
Exit Sub
End If
If Me.Txb_Contact_1 = "" Then
MsgBox "Il faut au moins un contact !", vbCritical, "Erreur saisie"
Me.Txb_Client.SetFocus
Exit Sub
End If
If Me.Cmb_Besoin = "" Then
MsgBox "Il faut choisir un besoin !", vbCritical, "Erreur saisie"
Me.Txb_Client.SetFocusk
Exit Sub
End If
If Me.Cmb_Res_Act = "" Then
MsgBox "Il faut choisir le Responsable de l'action !", vbCritical, "Erreur saisie"
Me.Txb_Client.SetFocus
Exit Sub
End If



With Sheets("Base de donnée client")
X = .Cells(Rows.Count, "C").End(xlUp).Row + 1
.Range("B" & X) = Me.Txb_Client
.Range("C" & X) = Me.Cmb_Sect_Acti
.Range("D" & X) = Me.Cmb_Ville
.Range("E" & X) = Me.Txb_Adresse
.Range("F" & X) = Me.Txb_Contact_1
.Range("G" & X) = Me.Txb_Fonction_1
.Range("H" & X) = CLng(Me.Txb_Tel_1)
.Range("I" & X) = Me.Txb_Contact_2
.Range("J" & X) = Me.Txb_Fonction_2
.Range("K" & X) = CLng(Me.Txb_Tel_2)
.Range("L" & X) = Me.Txb_Contact_3
.Range("M" & X) = Me.Txb_Fonction_3
.Range("N" & X) = CLng(Me.Txb_Tel_2)
.Range("O" & X) = Me.Cmb_Besoin
.Range("P" & X) = Me.Cmb_Res_Act
End With

'Remise à 0 de l'USF'
Me.Txb_Client = ""
Me.Cmb_Sect_Acti = ""
Me.Cmb_Ville = ""
Me.Txb_Adresse = ""
Me.Txb_Contact_1 = ""
Me.Txb_Fonction_1 = ""
Me.Txb_Contact_2 = ""
Me.Txb_Fonction_2 = ""
Me.Txb_Contact_3 = ""
Me.Txb_Fonction_3 = ""
Me.Txb_Tel_1 = ""
Me.Txb_Tel_2 = ""
Me.Txb_Tel_3 = ""
Me.Cmb_Besoin = ""
Me.Cmb_Res_Act = ""
Me.Txb_Client.SetFocus
'mettre le curseur sur la Combobox formateur

End Sub
 

Paf

XLDnaute Barbatruc
Re : Optimiser un userform qui renseigne un tableau

Bonjour

pas sûr d'avoir compris. Mais peut-être ceci

Code:
....
.Range("H" & X) = CLng(Me.Txb_Tel_1)

If  Me.Txb_Contact_2 <> "" Then
    .Range("I" & X) = Me.Txb_Contact_2
    .Range("J" & X) = Me.Txb_Fonction_2
    .Range("K" & X) = CLng(Me.Txb_Tel_2)
End If
If  Me.Txb_Contact_3 <> "" Then
    .Range("L" & X) = Me.Txb_Contact_3
    .Range("M" & X) = Me.Txb_Fonction_3
    .Range("N" & X) = CLng(Me.Txb_Tel_2)
End If

.Range("O" & X) = Me.Cmb_Besoin
...

A+
 

camarchepas

XLDnaute Barbatruc
Re : Optimiser un userform qui renseigne un tableau

Bonjour,

Regardes où ton code plante exactement quel est le message exact, si c'est sur :

.Range("H" & X) = CLng(Me.Txb_Tel_1)

écrit

.Range("H" & X) = CLng("0" & Me.Txb_Tel_1)


pour voir .
 

camarchepas

XLDnaute Barbatruc
Re : Optimiser un userform qui renseigne un tableau

Bonsoir à tous , Paf et Jean Marie, Saggigo

Pas dans un autre fil , j'espére , y'a des sacrées puces sur le forum des fois.

Bon , y'a plus de soleil à cette heure donc plus de réseau je suppose ....
 

saggigo

XLDnaute Occasionnel
Re : Optimiser un userform qui renseigne un tableau

Bonjour à tous, Paf; camarchepas; Staple

Merci à tous pour vos réponses, et j'ai choisi celle de camarchepas. la feuille ne bug plus elle introduit un "0".

Merci beaucoup
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…