Textbox

Plumeau72

XLDnaute Nouveau
Bonjour,
j'ai créé un userform dans lequel j'ai prévu des textBox pour les N° de téléphone (fixe et mobile).
Quand la personne ne communique pas, soit le fixe, soit le portable, le champ correspondant reste vide et quand j'inscris dans un fichier Excel, il m'est répondu

"Erreur d'exécution '13'
Incompatibilité de type"

Je précise que je suis débutant en VBA

Merci de votre aide
 

Plumeau72

XLDnaute Nouveau
Voici le code utilisé


'***********************
'Procédure permettant d'ajouter un nouveau client
'dans le fichier client
'***********************
Private Sub BtnAjout_Click()

Sheets("Fichier clients").Activate
Range("A1").Select
Selection.End(xlDown).Select 'Positionne sur la dernire ligne non vide
Selection.Offset(1, 0).Select 'DŽcale d'une ligne vers le bas
ActiveCell = cboOrdre.Value
ActiveCell.Offset(0, 1).Value = cboMachine
ActiveCell.Offset(0, 2).Value = cboService
ActiveCell.Offset(0, 3).Value = cboCivilite
ActiveCell.Offset(0, 4).Value = txtNom
ActiveCell.Offset(0, 5).Value = txtPrenom
ActiveCell.Offset(0, 6).Value = txtAdresse
ActiveCell.Offset(0, 7).Value = txtCP
ActiveCell.Offset(0, 8).Value = txtVille
ActiveCell.Offset(0, 9).Value = txtFixe
ActiveCell.Offset(0, 10).Value = txtPortable
ActiveCell.Offset(0, 11).Value = txtEmail
ActiveCell.Offset(0, 12).Value = txtCommentaire

MsgBox "La fiche client a bien été créée", vbOKOnly + vbInformation, "CONFIRMATION"

Unload Me

End Sub

Merci
 

Plumeau72

XLDnaute Nouveau
Bonjour, Lupin
J'ai essayé la modification proposée mais le résultat est le même.

Je vous adresse l'ensemble d'instructions ci-dessous.
Quand j'édite le débogage, la ligne Range ("D8") est surlignée en jaune:

Sheets("Prise en charge").Activate
Range("D4").Select
ActiveCell.Value = cboMachine
ActiveCell.Offset(1, 0).Value = cboMachine
ActiveCell.Offset(2, 0).Value = cboCivilite
ActiveCell.Offset(2, 1).Value = txtNom
ActiveCell.Offset(2, 2).Value = txtPrenom
ActiveCell.Offset(3, 0).Value = txtAdresse
ActiveCell.Offset(4, 0).Value = txtCP
ActiveCell.Offset(5, 0).Value = txtVille
ActiveCell.Offset(6, 0).Value = txtFixe
ActiveCell.Offset(7, 0).Value = txtPortable
ActiveCell.Offset(11, -3).Value = txtCommentaire
Range("D8") = CDbl(frmSaisie.txtCP) 'Format nombre
Range("D10") = CDbl(frmSaisie.txtFixe) 'Format nombre
Range("D11") = CDbl(frmSaisie.txtPortable) 'Format nombre

Merci de votre aide
 

lupin

XLDnaute Junior
Je l'avais bien deviné qu'il s'agissait du code postal. Mais parfois on peut le précéder d'une lettre.
Et en essayant CLng au lieu de CDbl ! Car en fait CDbl est prévu pour des nombres décimaux, et dans le cas de CP il n'y a pas de décimales.
 

Plumeau72

XLDnaute Nouveau
D'abord merci

Je t'adresse le fichier ci-dessous. J'ai mis des apostrophes avant les 3 dernières lignes et cela fonctionne correctement (sans le débogage systématique), mais mon second problème est que même si je mets les cellules de destination :

D8 en format spécial "code postal" et les cellules D10 et D11 en format spécial "N° de téléphone

restent tout le temps en format texte

Sheets("Prise en charge").Activate
Range("D4").Select
ActiveCell.Value = cboMachine
ActiveCell.Offset(1, 0).Value = cboMachine
ActiveCell.Offset(2, 0).Value = cboCivilite
ActiveCell.Offset(2, 1).Value = txtNom
ActiveCell.Offset(2, 2).Value = txtPrenom
ActiveCell.Offset(3, 0).Value = txtAdresse
ActiveCell.Offset(4, 0).Value = txtCP
ActiveCell.Offset(5, 0).Value = txtVille
ActiveCell.Offset(6, 0).Value = txtFixe
ActiveCell.Offset(7, 0).Value = txtPortable
ActiveCell.Offset(11, -3).Value = txtCommentaire
'Range("D8") = CLng(frmSaisie.txtCP) 'Format nombre
'Range("D10") = CLngl(frmSaisie.txtFixe) 'Format nombre
'Range("D11") = CLng(frmSaisie.txtPortable) 'Format nombre


MsgBox "La fiche client a bien été créée", vbOKOnly + vbInformation, "CONFIRMATION"

Unload Me


Cdlt
 

lupin

XLDnaute Junior
Bon voici donc en concret l'exécution du formulaire :
upload_2016-9-4_21-9-55.png

Et le résultat dans la feuille Excel avec les 3 lignes en commantaire :
upload_2016-9-4_21-11-23.png

Alors je ne comprends pas l'utilité de ces lignes car elles refont l'injection des données des lignes :
ActiveCell.Offset(4, 0).Value = txtCP
ActiveCell.Offset(6, 0).Value = txtFixe
ActiveCell.Offset(7, 0).Value = txtPortable

Je viens de tester en mettant ces lignes en commentaire et en enlevant le commentaire des 3 dernières et tout fonctionne correctement alors
upload_2016-9-4_21-16-14.png


Il y a donc un 'conflit' entre les commandes (que j'ai aussi eu maintenant :

ActiveCell.Offset(4, 0).Value = txtCP et Range("D8") = CLng(frmSaisie.txtCP)

Conclusion : en remplaçant la première commande avec ActiveCell.Offset(4, 0).Value = CLng(txtCP) cela fonctionne parfaitement.

Cdlt.
 

Plumeau72

XLDnaute Nouveau
Cela fonctionne parfaitement. Un grand merci. Est-ce que je peux abuser?
J'ai un autre souci. Certaines personnes ont soit un portable, soit un fixe.
Quand je laisse un de ces 2 champs vides, j'ai une "incompatibilité de type"
Est-il possible de corriger cette anomalie?
Cdlt
 

lupin

XLDnaute Junior
Bonjour,
Il suffit de contrôler si le textbox n'est pas vide avant d'inscrire dans le fichier, comme ceci :
If txtFixe <> "" Then
ActiveCell.Offset(6, 0).Value = txtFixe
End If
If txtPortable <> "" Then
ActiveCell.Offset(7, 0).Value = txtPortable
End If

Cdlt.
 

Membres actuellement en ligne

Statistiques des forums

Discussions
314 628
Messages
2 111 337
Membres
111 105
dernier inscrit
Joffrette