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 :
Qui provient de ce code :
derligne = Sheets(Ws).Range("B458421" & Rows.Count).End(xlUp).Row + 1Alors 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 SubDu 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) :
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 + 1je 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 + 1ou 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 + 1Bonjour,
1. Votre ligne doit être ceci -->
derligne = Sheets(Ws).Range("B" & Rows.Count).End(xlUp).Row + 12. 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 SubCordialement
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 SubBonjour,
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 + 1Bonjour à 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