Erreur de UserForm, format du TextBox et Sélection de date

Bonjour le forum,

Dans le fichier ci - joint j'ai crée un Userform où quand l'utilisateurs fournit les informations demandés, celui - ci s'injecte automatiquement dans la feuille concernés.

Exemples : S'il sélectionne le mois de Janvier dans le userform, il s'injectera dans la feuille Excel de Janvier.

Donc le code a été mise en place, donc ça marchait et j'ai souhaité ajouté un code pour modifier les formats de cellules du TextBox 4 et 5 (Débit et Crédit) pour qu'il infjecte sous forme monétaire dans le tableau. Car il s'injecte en texte et les calculs de soldes ne se font donc pas automatiquement. Or, le code n'a pas d'effet et il m'indique ce message d'erreur :

image

Qui provient de ce code :

derligne = Sheets(Ws).Range("B458421" & Rows.Count).End(xlUp).Row + 1

Alors qu'avant ça marchait !

Et voici le code pour le format du TextBox:

Private Sub TextBox4_Change()
On Error Resume Next
Me.TextBox4 = Format(Me.TextBox4.Value, "######,00")
End Sub

Du coup, est - ce qu'il sera importé sous format d'un nombre monétaire sur la feuille excel?

Voici à quoi ressemble mon UserForm (nommé Ajouter) :

image

L'utilisateur est forcément obligé de choisir le Mois pour importer dans la feuille concernés. Mais est - ce qu'il y a un type de code pour que ça soit directement repérés quand il rentrera la date dans le textBox 1 (Date de l'opération) et qu'il rentre automatiquement dans la feuille concernés?

Je débute dans le VBA donc je ne suis pas encore calé sur plein de point du coup merci beaucoup de votre aide!

Cordialement

Praveena

bonjour,

derligne = Sheets(Ws).Range("B458421" & Rows.Count).End(xlUp).Row + 1

je doute que cette instruction ait jamais fonctionné. Voici des corrections possibles.

A toi de choisir entre les 2 syntaxes,

rechercher la première ligne non utilisée en partant de la ligne 458421

derligne = Sheets(Ws).Range("B458421").End(xlUp).Row + 1

ou rechercher la première ligne non utilisée en partant de la dernière ligne possible pour ta version excel

derligne = Sheets(Ws).Range("B" & Rows.Count).End(xlUp).Row + 1

Bonjour,

1. Votre ligne doit être ceci -->

 derligne = Sheets(Ws).Range("B" & Rows.Count).End(xlUp).Row + 1

2. En dehors de cela, je ferais ceci

- ne pas activer le bouton Valider à l'ouverture de l'userform car si vous avez oublié de mettre le mois, le code vous renvoie une erreur.
- supprimez les Rowsource dans vos trois combobox. Evitez cette instruction. On le répète souvent...
- Ajoutez ce code dans l'userform qui va s'exécuter à l'ouverture de l'userform (attention à bien supprimer les 3 valeurs dans la propriété de Rowsource avant l'ouverture de l'userform)

Private Sub UserForm_Initialize()
CommandButton1.Enabled = False
With Sheets("Données")
    Mois.List = .Range("A2:A13").Value
    ListBox1.List = .Range("B2:B" & .Range("B" & Rows.Count).End(xlUp).Row).Value
    ListBox2.List = .Range("C2:C" & .Range("C" & Rows.Count).End(xlUp).Row).Value
End With
End Sub

- ajoutez ce code dans l'userform qui rendra le bouton Valider actif dès que la combo Mois sera complétée

Private Sub Mois_Change()
If Mois.ListIndex <> -1 Then CommandButton1.Enabled = True
End Sub

Cordialement

Edit : Pour h2so4, désolé mais je n'avais pas vu que tu avais posté....

Bonjour,

Je confirme que ça a été modifié depuis le dernier post => https://forum.excel-pratique.com/excel/userform-remplissage-de-differents-feuilles-166095

Sinon, cela devrait fonctionner

Private Sub CommandButton1_Click()
Ws = Mois.Value
derligne = Sheets(Ws).Range("B" & Rows.Count).End(xlUp).Row + 1

With Sheets(Ws)
    .Range("B" & derligne).Value = TextBox1
    .Range("C" & derligne).Value = ListBox1
    .Range("D" & derligne).Value = TextBox2
    .Range("E" & derligne).Value = TextBox3
    .Range("F" & derligne).Value = ListBox2
    .Range("G" & derligne).Value = CDbl(TextBox5.Value)
    .Range("H" & derligne).Value = CDbl(TextBox4.Value)
    If OptionButton1.Value = True Then
    .Range("J" & derligne).Value = OptionButton1.Caption
    ElseIf OptionButton2.Value = True Then
    Range("J" & derligne).Value = OptionButton2.Caption
    End If
End With

Unload Me
Ajouter.Show  'Nom du UserForm
End Sub

Bonjour,

pour sélectionner la feuille en fonction de la date de l'opération voici :

ws = Format(DateValue(TextBox1.Value), "mmmm")
derligne = Sheets(ws).Range("B" & rows.count).End(xlUp).Row + 1

Bonjour à tous,

@Thrrybo

J'ai essayé ton code mais il ne marche toujours pas et m'affiche la même erreur...

@h2so4

Merci beaucoup pour le code!

@Dan

Je vais essayer le code, merci!

Je supprime la source de données pour les déroulants et c'est avec le code que tous va être récupérés?

Merci

Praveena

Bonjour,

Je supprime la source de données pour les déroulants et c'est avec le code que tous va être récupérés?

Je suppose que vous faites référence à l'instruction Rowsource. La réponse est oui. Chaque fois que vous ouvrirez l'userform les combobox seront chargées

Rem : Pourquoi repostez-vous le même fichier ?

Cordialement

Rechercher des sujets similaires à "erreur userform format textbox selection date"