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

ne pas être forcé de remplir toutes mes saisies

P

Patrick

Guest
Salut, comment dois je procéder si je ne désire pas entrer de saisie dans certaines cases de mon (userform1) sans que ça plante: car qq fois je n'aurais pas toutes les infos en même temps.


Private Sub CmdCancel_Click()
Unload UserForm1
End Sub

Private Sub CmdOK_Click()
Sheets("Liste").Select
ActiveSheet.[DEB].Select
Selection.End(xlDown).Select
If Selection.Address = "$A$65536" Then
Range("DEB").Offset(1, 0).Select
Else
Selection.Offset(1, 0).Select
End If
ActiveCell.Value = UserForm1.txtNom
ActiveCell.Offset(0, 1).Value = UserForm1.txtPrenom
ActiveCell.Offset(0, 2).Value = UserForm1.TxtTelDom
ActiveCell.Offset(0, 3).Value = CLng(UserForm1.Txtnumader)
ActiveCell.Offset(0, 4).Value = UserForm1.Txtprof
ActiveCell.Offset(0, 5).Value = UserForm1.Txtadress
ActiveCell.Offset(0, 6).Value = CLng(UserForm1.Txtpostal)
ActiveCell.Offset(0, 7).Value = UserForm1.Txtlocal
'Sheets("Client").Select
'Sheets("Client").Copy
Worksheets("Client").Copy after:=Worksheets("Client")

ActiveSheet.Name = UCase(UserForm1.txtNom) & " " & UserForm1.txtPrenom
ActiveSheet.Range("D5") = UserForm1.txtNom
ActiveSheet.Range("D6") = UserForm1.txtPrenom
If IsNumeric(UserForm1.TxtTelDom) = True Then ActiveSheet.Range("D13") = CLng(UserForm1.TxtTelDom)
ActiveSheet.Range("D15") = UserForm1.Txtprof
If IsNumeric(UserForm1.Txtnumader) = True Then ActiveSheet.Range("D17") = CLng(UserForm1.Txtnumader)
ActiveSheet.Range("D9") = UserForm1.Txtadress
If IsNumeric(UserForm1.Txtpostal) = True Then ActiveSheet.Range("D10") = CLng(UserForm1.Txtpostal)
ActiveSheet.Range("D11") = UserForm1.Txtlocal
Unload Me
End Sub
 
V

vincent

Guest
Bonsoir

le plus simple je crois serai de remplacer
If IsNumeric(UserForm1.TxtTelDom) = True Then ActiveSheet.Range("D13") = CLng(UserForm1.TxtTelDom)

par

If IsNumeric(UserForm1.TxtTelDom) = True and isempty(userform1.TxttelDom)=false Then ActiveSheet.Range("D13") = CLng(UserForm1.TxtTelDom)

partout ou tu utilises la fonction CLng


Bonne soirée

@+Vincent
 
P

Patrick

Guest
Merci Vincent, apparemment cela fonctionne bien, cependant j'ai un problème pour entrer mes saisies numériques au niveau des commande offset car il accepte la commande Clng que si il y a des données de saisies et si je ne rentre rien il plante à cet endroit:
ActiveCell.Offset(0, 2).Value = CLng(UserForm1.TxtTelDom)
Si je retire le Clng de cette ligne, ça donne donc ceci:
ActiveCell.Offset(0, 2).Value = UserForm1.TxtTelDom
Et tous fonctionne correctement si je n'entre pas de saisies grace à ta ligne que j'ai rentré plus loin.

Avec le Clng retiré de la ligne:
ActiveCell.Offset(0, 2).Value = UserForm1.TxtTelDom
Quand je rentre les chiffres, il sont pris comme du texte et pas du numérique, et le formatage ne se fait pas sur excel (comme celui là qui est formaté en tant que numéro de telephone).

je te montre ou j'ai placé tes lignes de commande.

Private Sub CmdCancel_Click()
Unload UserForm1
End Sub

Private Sub CmdOK_Click()
Sheets("Liste").Select
ActiveSheet.[DEB].Select
Selection.End(xlDown).Select
If Selection.Address = "$A$65536" Then
Range("DEB").Offset(1, 0).Select
Else
Selection.Offset(1, 0).Select
End If
ActiveCell.Value = UserForm1.txtNom
ActiveCell.Offset(0, 1).Value = UserForm1.txtPrenom
ActiveCell.Offset(0, 2).Value = CLng(UserForm1.TxtTelDom)
ActiveCell.Offset(0, 3).Value = Clng(UserForm1.Txtnumader)
ActiveCell.Offset(0, 4).Value = UserForm1.Txtprof
ActiveCell.Offset(0, 5).Value = UserForm1.Txtadress
ActiveCell.Offset(0, 6).Value = Clng(UserForm1.Txtpostal)
ActiveCell.Offset(0, 7).Value = UserForm1.Txtlocal
'Sheets("Client").Select
'Sheets("Client").Copy
Worksheets("Client").Copy after:=Worksheets("Client")

ActiveSheet.Name = UCase(UserForm1.txtNom) & " " & UserForm1.txtPrenom
ActiveSheet.Range("D5") = UserForm1.txtNom
ActiveSheet.Range("D6") = UserForm1.txtPrenom
If IsNumeric(UserForm1.TxtTelDom) = True And IsEmpty(UserForm1.TxtTelDom) = False Then ActiveSheet.Range("D13") = CLng(UserForm1.TxtTelDom)
ActiveSheet.Range("D15") = UserForm1.Txtprof
If IsNumeric(UserForm1.Txtnumader) = True And IsEmpty(UserForm1.Txtnumader) = False Then ActiveSheet.Range("D17") = CLng(UserForm1.Txtnumader)
ActiveSheet.Range("D9") = UserForm1.Txtadress
If IsNumeric(UserForm1.Txtpostal) = True And IsEmpty(UserForm1.Txtpostal) = False Then ActiveSheet.Range("D10") = CLng(UserForm1.Txtpostal)
ActiveSheet.Range("D11") = UserForm1.Txtlocal
Unload Me
End Sub
 
V

vincent

Guest
Re

je pense que l'on peut utiliser la même solution.

remplace

ActiveCell.Offset(0, 2).Value = CLng(UserForm1.TxtTelDom)

par

if isempty(UserForm1.TxtTelDom)=false then ActiveCell.Offset(0, 2).Value = CLng(UserForm1.TxtTelDom)

partout ou c'est necessaire.

Bonne soirée

@+Vincent
 

Discussions similaires

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