modifier en vba les données d'une liste

W

Willy

Guest
Bonjour à tous,

J'ai une liste de données du personnel dans la feuille "BDD" en A3:J500.

dans la feuille ACCEUIL, j'ai un userform avec lequel en saisissant le nom et prénom de la personne je récupère et j'affiche dans des textbox les infos.

Je souhaiterai pouvoir modifier à partir de l'USF une ou plusieurs infos et les replacer dans la liste en remplacement donc des anciennes.

Je ne peux pas bien sur me servir du numéro de ligne du tableau, car la liste évolue en entrée personnel alphabétiquement.

J'ai bien essayé ceci :
Sheets("BDD").Range("D1").Offset(Entree_MatriculeM + 1, 0) = TextBox_GradeM
Sheets("BDD").Range("E1").Offset(Entree_MatriculeM + 1, 0) = ComboBox_FonctionM
Etc ...

En prenant pour repère le matricule de la personne mais sans résultat.

Donc je sèche la !!
Si vous avez une suggestion ou mieux un exemple
merci beaucoup
Willy
 
@

@+Thierry

Guest
Salut Marc, Willy, Robert, Jocelyne, le Forum

Heureux d'avoir pu un peu t'orienter Willy.

Pour Marc, voici une méthode qui ne laissera pas passer ton User si il saisit autre chose qu'une date dans une TextBox de UserForm.

Matériel nécessaire pour Tester :
1 Classeur Vierge
1 UserForm
1 TextBox nommée TextBox1
1 CommandButton (ou n'importe quoi, c'est pour sortir du focus de la textbox)

Le Code à mettre dans le Private Module du UserForm en Question :

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim DateSep As Variant 'La Fonction Split retourne Variant
Dim TheDate As Date

DateSep = Split(TextBox1.Text, Application.International(xlDateSeparator))
If UBound(DateSep) <> 2 Then GoTo Fin '<<< Gestion d'erreur si NON Séparateurs des paramètres du PC

If Not IsDate(TextBox1.Value) Then GoTo Fin '<<< Gestion si NON Date

TheDate = CDate(TextBox1) '<<< Initialisation pour garder la date (pour des calculs éventuels par VBA)

On Error GoTo Fin 'si le user tape un style du truc 12/01/201
Range("A1") = TheDate '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Possibilité I
Range("B1") = CDate(Format(TheDate, "DD/MM/YYYY")) '<<<< Possibilité II
Range("C1") = CDate(Format(TextBox1, "DD/MM/YYYY")) '<<< Possibilité II

Exit Sub

Fin: 'Label de sortie si on a pas affaire à une date.

Cancel = True '<< Si on veut bloquer le User dans cette TextBox

With TextBox1 'pour Sélectionner/Surligner le text faux dans la TextBox
.SetFocus
.SelStart = 0
.SelLength = Len(TextBox1.Text)
End With
End Sub


Voilà, on peut aussi mettre un MsgBox, mais pourquoi stresser le User pour rien... De toute façon il aura vite compris !!!

Bon Apétit à tous et toutes
@+Thierry
 

Discussions similaires