bug macro a cause du nombre de caractères

saggigo

XLDnaute Occasionnel
bonjour à tous,
j'ai une macros qui m'aide à remplir un tableau excel en utilisant un userform, mais sur certain champs des que je dépasse un certain nombre de caractères, elle bug.

le bug se situe au niveau de la ligne: shtJT.Range("A" & X) = CLng(Me.Txb_PO)

Pourriez-vous s'il vous plait me donner un coup de main :)

Private Sub Valider_Click()
Dim X As Long
Dim shtJT As Worksheet
If Me.Txb_customer = "" Then
MsgBox "Il faut un nom de client !", vbCritical, "Erreur saisie"
Me.Txb_customer.SetFocus
Exit Sub
End If

With Sheets("CSML")
Set shtJT = ActiveWorkbook.Sheets("CSML")
'Worksheets("CSML").Activate
X = shtJT.Cells(Rows.Count, "A").End(xlUp).Row + 1
shtJT.Range("A" & X) = CLng(Me.Txb_PO)
shtJT.Range("B" & X) = Me.Txb_customer
shtJT.Range("C" & X) = CLng(Me.Txb_NotProj)
shtJT.Range("D" & X) = Me.DTPicker1
shtJT.Range("E" & X) = Me.DTPicker2
shtJT.Range("F" & X) = Me.Txb_PR_Ref
shtJT.Range("G" & X) = Me.DTPicker3
shtJT.Range("H" & X) = Me.DTPicker4

End With

'Remise à 0 de l'USF, sauf date de transfert du BC
Me.Txb_customer = ""
Me.Txb_PO = ""
Me.Txb_NotProj = ""
Me.Txb_PR_Ref = ""
Me.Txb_customer.SetFocus
'mettre le curseur sur la Combobox client

End Sub
 

cathodique

XLDnaute Barbatruc
Bonjour,
sans fichier pas possible de tester. Mais voici ce qui est donné dans l'aide vba:
Dépassement de capacité (erreur 6)
Particularités

Un dépassement de capacité se produit lorsque vous tentez d'effectuer une affectation dépassant les limites de la cible de l'affectation. Causes et solutions de cette erreur :
  • Le résultat d'une affectation, d'un calcul ou d'une conversion de type de données est trop grand pour être représenté dans la plage de valeurs autorisée pour ce type de variable.
    Affectez la valeur à un type de variable pouvant contenir une plage de valeurs plus grande.

  • Une affectation à une propriété dépasse la valeur maximum de la propriété.
    Vérifiez que votre affectation se situe à l'intérieur de la plage de la propriété cible.

  • Vous tentez d'utiliser dans un calcul un nombre converti dans un entier, mais le résultat est plus grand qu'un entier. Exemple :
    Dim x As Long
    x = 2 000 * 365 ' Erreur : Dépassement de capacité
    Afin de contourner le problème, saisissez le nombre comme suit :

    Dim x As Long
    x = CLng(2 000) * 365
j'espère que ça t'aidera.
 

saggigo

XLDnaute Occasionnel
Bonjour Cathodique,
Je te remercie pour ta réponse, c'est super gentil de ta part.
cependant, je n'ai pas bien compris ta solution.
dans mon tableau, je n'effectue aucun calcul et donc le dépassement n'est fait que parce que les références (nombre) que j'introduit sont des chiffres qui dépassent les 10 caractères.
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Non, if faut dire: forment un nombre qui dépasse 2 147 483 647 lequel est la plus grande valeur supportée par un Long
shtJT.Range("A" & X) = CDbl(Me.Txb_PO) marcherait mieux, jusqu'à 15 chiffres. Si ça peut les dépasser il vaudrait mieux ne pas le convertir, et le laisser en String
 

saggigo

XLDnaute Occasionnel
Bonjour.
Non, if faut dire: forment un nombre qui dépasse 2 147 483 647 lequel est la plus grande valeur supportée par un Long
shtJT.Range("A" & X) = CDbl(Me.Txb_PO) marcherait mieux, jusqu'à 15 chiffres. Si ça peut les dépasser il vaudrait mieux ne pas le convertir, et le laisser en String

Dranreb, c'est génial, ça marche, cependant, pour ne pas avoir de surprise, pourrais-tu me dire comment faire pour garder le format en string et ne pas convertir en nombre, si un jour je suis amener à dépasser les 15 chiffre?
 

Discussions similaires

Statistiques des forums

Discussions
312 246
Messages
2 086 573
Membres
103 247
dernier inscrit
bottxok