Bonjour à tous,
Je débute en VBA et j'essaie de créer un classeur Excel ayant pour but de gérer une base de données RH (ressources humaines).
Les différents renseignements sont dans un onglet de mon fichier Excel "Base de données".
J'utilise un userform me permettant de modifier les enregistrements de la base de données (qui ne peut pas être modifiée en directe).
Le fonctionnement est le suivant :
Dans un premier temps, j'utilise une listbox dans l'userform pour que l'on puisse choisir le profil de la personne que l'on souhaite modifier.
Lorsque l'on clique sur une ligne de la listbox, les champs de mon userform sont alimentés automatiquement par les données de la personne recherchée situées dans l'onglet excel "Base de données".
Ensuite, on a alors la possibilité de modifier le contenu des champs de l'userform (nom, prénom, etc.) et de cliquer sur un bouton de commande "valider" pour que mon onglet "Base de données" sur Excel se mette à jour avec les données de l'userform modifiées.
Cependant, lorsque que je clique pour la première fois sur le bouton "valider", ma macro ne marche pas (à l'exception du msgbox qui lui s'affiche bien) : ma base de données ne se met pas à jour et je perds mes modifications saisies dans l'userform. Je suis obligé de refaire la manipulation une deuxième fois en gardant l'userform ouvert pour que cela fonctionne. Cela marche également toutes les fois suivantes du moment que mon userform reste ouvert.
J'ai beau cherché, je ne trouve pas l'explication. Je pense que c'est lié à la listbox car je n'avais pas ce "bug" avant de l'intégrer.
Pouvez-vous m'aider ?
Merci d'avance
Le code qui me permet d'alimenter mon userform selon la sélection sur la listbox :
	
	
	
	
	
		
Le code associé à mon bouton de commande "Valider" :
	
	
	
	
	
		
	
		
			
		
		
	
				
			Je débute en VBA et j'essaie de créer un classeur Excel ayant pour but de gérer une base de données RH (ressources humaines).
Les différents renseignements sont dans un onglet de mon fichier Excel "Base de données".
J'utilise un userform me permettant de modifier les enregistrements de la base de données (qui ne peut pas être modifiée en directe).
Le fonctionnement est le suivant :
Dans un premier temps, j'utilise une listbox dans l'userform pour que l'on puisse choisir le profil de la personne que l'on souhaite modifier.
Lorsque l'on clique sur une ligne de la listbox, les champs de mon userform sont alimentés automatiquement par les données de la personne recherchée situées dans l'onglet excel "Base de données".
Ensuite, on a alors la possibilité de modifier le contenu des champs de l'userform (nom, prénom, etc.) et de cliquer sur un bouton de commande "valider" pour que mon onglet "Base de données" sur Excel se mette à jour avec les données de l'userform modifiées.
Cependant, lorsque que je clique pour la première fois sur le bouton "valider", ma macro ne marche pas (à l'exception du msgbox qui lui s'affiche bien) : ma base de données ne se met pas à jour et je perds mes modifications saisies dans l'userform. Je suis obligé de refaire la manipulation une deuxième fois en gardant l'userform ouvert pour que cela fonctionne. Cela marche également toutes les fois suivantes du moment que mon userform reste ouvert.
J'ai beau cherché, je ne trouve pas l'explication. Je pense que c'est lié à la listbox car je n'avais pas ce "bug" avant de l'intégrer.
Pouvez-vous m'aider ?
Merci d'avance
Le code qui me permet d'alimenter mon userform selon la sélection sur la listbox :
		VB:
	
	
	Private Sub Listbox_Click()
Dim LigneBDD As Integer
LigneBDD = Me.Listbox.ListIndex + 3 'Cherche le numéro de ligne correspondant dans l'onglet excel (+3 car 3 lignes en entêtes de colonnes)
    'récupération des informations de la BDD pour remplir le formulaire
   
    Sheets("Base de données").Activate
    Cells(LigneBDD, 1).Select
   
    FormulaireModif.Txtmatricule1 = Cells(LigneBDD, 1)
    FormulaireModif.TxtNom = Cells(LigneBDD, 2) 'nom
    FormulaireModif.TxtPrénom = Cells(LigneBDD, 3) 'prénom
    FormulaireModif.CBXGenre = Cells(LigneBDD, 4) 'genre
    FormulaireModif.TxtDateNaissance = Cells(LigneBDD, 5) 'date de naissance
    FormulaireModif.TxtAdresse = Cells(LigneBDD, 6) ' adresse
    FormulaireModif.CBXVille = Cells(LigneBDD, 7) 'ville
    FormulaireModif.TxtMail = Cells(LigneBDD, 8) 'mail
    FormulaireModif.TxtTel = Cells(LigneBDD, 9) 'téléphone
    FormulaireModif.CBXDiplôme = Cells(LigneBDD, 10) 'diplôme
    FormulaireModif.CBXSitupro = Cells(LigneBDD, 11) 'situation professionnelle
   
End SubLe code associé à mon bouton de commande "Valider" :
		VB:
	
	
	Private Sub Btnvalider1_Click()
    Sheets("Base de données").Activate
 
    'Affectation des valeurs du formulaire'
   
    ActiveCell.Value = Me.Txtmatricule1.Value 'Matricule
    ActiveCell.Offset(0, 1).Value = Me.TxtNom.Value 'nom
    ActiveCell.Offset(0, 2).Value = Me.TxtPrénom.Value 'Prénom
    ActiveCell.Offset(0, 3).Value = Me.CBXGenre.Value 'Genre
    ActiveCell.Offset(0, 4).Value = CDate(TxtDateNaissance.Value) 'date de naissance
    ActiveCell.Offset(0, 5).Value = Me.TxtAdresse.Value 'adresse
    ActiveCell.Offset(0, 6).Value = Me.CBXVille.Value 'ville
    ActiveCell.Offset(0, 7).Value = Me.TxtMail.Value 'mail
    ActiveCell.Offset(0, 8).Value = Me.TxtTel.Value 'Téléphone
    ActiveCell.Offset(0, 9).Value = Me.CBXDiplôme.Value 'Diplôme
    ActiveCell.Offset(0, 10).Value = Me.CBXSitupro.Value 'Situation professionnelle
 MsgBox "La modification a bien été effectuée.", VB
 
End Sub 
	 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		