[RESOLU] erreur si la textbox est vide

nrdz83

XLDnaute Impliqué
Bonjour à tous et bonnes fêtes de paques,

Voila j'ai le code ci-dessous pour ranger les données dans ma feuille, cela fonctionne. Afin d'avoir un format numèrique j'ai rajouté CDBl davant ma textbox.

Le problème que je rencontre c'est que si ma textbox n'a pas de données (cela peut arriver) alors j'ai une erreur.

Comment puis-je modifier ce code pour que ça fonctionne même si ma textbox est vide?

Par avanr un grand merci.

Amitiés

Code:
With Sheets("Interventions_Antipol")
    derligne = .Range("A65536").End(xlUp).Row + 1
    .Range("A" & derligne) = Label_Fiche
        .Cells(derligne, 2) = Format(DTPicker1, "dd-mmm-yyyy")  'Format pour ne mettre que jj-mmm-aaaa
        .Cells(derligne, 3) = Format(TXT_1, "##:##")
        .Cells(derligne, 4) = Format(TXT_2, "##:##")
        .Cells(derligne, 5).FormulaR1C1 = "=RC[-1]-RC[-2]"
        .Cells(derligne, 6) = Combo_1
        .Cells(derligne, 7) = CDbl(TXT_3) 'CDbl permet de convertir les données en format numérique
        .Cells(derligne, 8) = Format(TXT_4, "#  mètres")
        .Cells(derligne, 9) = Combo_2
        .Cells(derligne, 10) = CDbl(TXT_5)
        .Cells(derligne, 11) = CDbl(TXT_6)
        .Cells(derligne, 12) = Combo_3
        .Cells(derligne, 13) = CDbl(TXT_7)
        .Cells(derligne, 14) = CDbl(TXT_8)
        .Cells(derligne, 15) = CDbl(TXT_9)
        .Cells(derligne, 16) = Combo_4
        .Cells(derligne, 17) = Txt_10
  
  
  
End With
 
Dernière édition:

Cousinhub

XLDnaute Barbatruc
Re : erreur si la textbox est vide

Bonsoir à tous

Bsr Jc :)
Bsr Mr Bean :)

@ JC, je ne pense pas que la méthode IIf soit la bonne, parce quoiqu'il arrive, tout est calculé...
Ainsi, si "Txt_3" est vide, VBA va quand même évaluer la solution de "secours"....
Et provoquer une erreur si le textbox est vide

@ Mr Bean, si tu remplaces CDBl par Val, tu n'auras plus cette erreur, mais tu obtiendras un 0 au lieu d'un "rien"...
Et il faut que le point (ou la virgule) d'un nombre soit bien un . (point) et non une virgule
Ainsi, un nombre tel que 2.125 doit être écrit ainsi, et non 2,125 sinon, tu n'auras que la valeur 2
Autrement, reste le célèbre If ... Then ... Else ..... End if
Selon le nombre de TextBox, ça peut le faire...

@ Tentative, tant qu'on peut gérer les erreurs, mieux vaut les éviter que de les passer au forceps...:cool:

Bonne soirée à tous
 
Dernière édition:

nrdz83

XLDnaute Impliqué
Re : erreur si la textbox est vide

Bonsoir bhbh
merci pour tes lumières effectivement j'ai remplacé CDBl par Val et ça fonctionne sauf que j'ai comme tu l'annonçaisun zéro qui s'affiche.
pour le if then il faut que je cherche comment procédé il y a six textbox succeptible de ne pas être remplie.

AMitiés
 

Cousinhub

XLDnaute Barbatruc
Re : erreur si la textbox est vide

Re-,

Tant que j'y pense, plutôt que d'utiliser la version "2003" de la définition de la dernière ligne (avec un range 65536), préfère une version "new age" telle que :

Code:
Dim DerLigne As Long
With Feuil1
    DerLigne = .Cells(Rows.Count, "A").End(xlUp).Row + 1
End With

qui prendra en compte le nombre plus important de lignes sur les versions 2007 et ultérieures (soit 1 048 576 lignes), mais qui fonctionnera toutefois sur les versions antérieures.
 

nrdz83

XLDnaute Impliqué
[RESOLU] : erreur si la textbox est vide

Re bonjour le fil, un grand merci bhbh pour toutes tes lumières ça fonctionne et modifié mon code de saisie.
(l'ancien il me semble que c'est déja toi qui me l'avait filé il y a quelques année lol)

le voici

Code:
With Sheets("Interventions_Antipol")
    
    DerLigne = .Cells(Rows.Count, "A").End(xlUp).Row + 1
        .Cells(DerLigne, 1) = Label_Fiche
        .Cells(DerLigne, 2) = Format(DTPicker1, "dd-mmm-yyyy")  'Format pour ne mettre que jj-mmm-aaaa
        .Cells(DerLigne, 3) = Format(TXT_1, "##:##")
        .Cells(DerLigne, 4) = Format(TXT_2, "##:##")
        .Cells(DerLigne, 5).FormulaR1C1 = "=RC[-1]-RC[-2]"
        .Cells(DerLigne, 6) = Combo_1
        .Cells(DerLigne, 7) = Val(TXT_3) 
        If Me.TXT_4 = "" Then .Cells(DerLigne, 8) = "" Else .Cells(DerLigne, 8) = CDbl(Me.TXT_4)
        .Cells(DerLigne, 9) = Combo_2
        If Me.TXT_5 = "" Then .Cells(DerLigne, 10) = "" Else .Cells(DerLigne, 10) = CDbl(Me.TXT_5) 
        If Me.TXT_6 = "" Then .Cells(DerLigne, 11) = "" Else .Cells(DerLigne, 11) = CDbl(Me.TXT_6)
        .Cells(DerLigne, 12) = Combo_3
        If Me.TXT_7 = "" Then .Cells(DerLigne, 13) = "" Else .Cells(DerLigne, 13) = CDbl(Me.TXT_7)
        If Me.TXT_8 = "" Then .Cells(DerLigne, 14) = "" Else .Cells(DerLigne, 14) = CDbl(Me.TXT_8)
        If Me.TXT_9 = "" Then .Cells(DerLigne, 15) = "" Else .Cells(DerLigne, 15) = CDbl(Me.TXT_9)
        .Cells(DerLigne, 16) = Combo_4
        .Cells(DerLigne, 17) = Txt_10
  
End With
    
 'Appel la mise en forme
 Call mefcAntipol

Encore un grang merci, maintenant il me reste a essayer d'incrementer automatiquement un n° à l'ouverture de l'userform.

Bonne fin de week end

amitiés
 
Dernière édition:

Statistiques des forums

Discussions
312 080
Messages
2 085 150
Membres
102 794
dernier inscrit
espinata