Excel Comment modifier un enregistrement
Fermé
EAB
Messages postés
3
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
5 septembre 2008
-
4 sept. 2008 à 10:24
eab - 11 sept. 2008 à 11:47
eab - 11 sept. 2008 à 11:47
A voir également:
- Excel Comment modifier un enregistrement
- Modifier liste déroulante excel - Guide
- Modifier dns - Guide
- Comment modifier un pdf - Guide
- Comment calculer la moyenne sur excel - Guide
- Word et excel gratuit - Guide
8 réponses
m@rina
Messages postés
22509
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
7 mai 2025
11 431
4 sept. 2008 à 21:53
4 sept. 2008 à 21:53
Bonjour,
Pas très clair...
En fait tu voudrais un formulaire (du même type que le premier) qui récupère toutes les données de l'enregistrement afin que l'utilisateur puisse le modifier ?
Si c'est ça, tes lignes de codes doivent ressembler à ça :
Me.control1.Value = ActiveCell.Value '1ère cellule
Me.control2.Value = ActiveCell.Offset(0, 1).Value '2e cellule
Me.control3.Value = ActiveCell.Offset(0, 2).Value '3e cellule
etc.
C'est basique, mais ça peut évidemment se compliquer en fonction de toutes sortes de choses !! :D
Il faut par exemple penser que l'utilisateur, s'il a plusieurs lignes à modifier, souhaiterait faire défiler ses données depuis le formulaire, pour lui éviter de valider, fermer et recommencer.
Penser aussi que si tu as utilisé des boutons d'options, il faut détricoter, pour que ce soit le bon bouton qui soit coché.
Etc. etc.
m@rina
Pas très clair...
En fait tu voudrais un formulaire (du même type que le premier) qui récupère toutes les données de l'enregistrement afin que l'utilisateur puisse le modifier ?
Si c'est ça, tes lignes de codes doivent ressembler à ça :
Me.control1.Value = ActiveCell.Value '1ère cellule
Me.control2.Value = ActiveCell.Offset(0, 1).Value '2e cellule
Me.control3.Value = ActiveCell.Offset(0, 2).Value '3e cellule
etc.
C'est basique, mais ça peut évidemment se compliquer en fonction de toutes sortes de choses !! :D
Il faut par exemple penser que l'utilisateur, s'il a plusieurs lignes à modifier, souhaiterait faire défiler ses données depuis le formulaire, pour lui éviter de valider, fermer et recommencer.
Penser aussi que si tu as utilisé des boutons d'options, il faut détricoter, pour que ce soit le bon bouton qui soit coché.
Etc. etc.
m@rina
EAB
Messages postés
3
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
5 septembre 2008
5 sept. 2008 à 09:58
5 sept. 2008 à 09:58
Bonjour m@rina,
Merci pour ta reponse.
En gros, ce que je souhaite,
sur un nouveau formulaire, avec un combobox rechercher et afficher en selectionnant le n° ID le contenue de toutes les cellules de la ligne concernée, puis modifier une de ces données et réenregistrer le tout (surtout la modification), dans la liste d'ou l'ensemble à été extrait.
Pour l'utilisateur, il n'aura qu'une ou 2 modifications journaliere à réaliser. et rarement en meme temps.
merci pour ton aide
Merci pour ta reponse.
En gros, ce que je souhaite,
sur un nouveau formulaire, avec un combobox rechercher et afficher en selectionnant le n° ID le contenue de toutes les cellules de la ligne concernée, puis modifier une de ces données et réenregistrer le tout (surtout la modification), dans la liste d'ou l'ensemble à été extrait.
Pour l'utilisateur, il n'aura qu'une ou 2 modifications journaliere à réaliser. et rarement en meme temps.
merci pour ton aide
m@rina
Messages postés
22509
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
7 mai 2025
11 431
5 sept. 2008 à 15:37
5 sept. 2008 à 15:37
Bonjour,
Je pense que le plus simple est que l'utilisateur se positionne sur la ligne à modifier (je suppose que ta feuille est protégée), puis il lance la macro.
La macro renvoie toutes les données de la ligne dans la formulaire selon le code que je t'ai indiqué.
Pour que la macro renvoie les données de la ligne, tu mets dans un sub userform_initialize :
num_ligne.Value = ActiveCell.Row 'numéro de ligne en cours
puis dans la macro du remplissage du formulaire :
Worksheets("ma_feuille").Rows(num_ligne.Value).Select
ActiveCell.Select
Me.control1.Value = ActiveCell.Value
Me.control2.Value = ActiveCell.Offset(0, 1).Value '2e cellule
etc.
m@rina
Je pense que le plus simple est que l'utilisateur se positionne sur la ligne à modifier (je suppose que ta feuille est protégée), puis il lance la macro.
La macro renvoie toutes les données de la ligne dans la formulaire selon le code que je t'ai indiqué.
Pour que la macro renvoie les données de la ligne, tu mets dans un sub userform_initialize :
num_ligne.Value = ActiveCell.Row 'numéro de ligne en cours
puis dans la macro du remplissage du formulaire :
Worksheets("ma_feuille").Rows(num_ligne.Value).Select
ActiveCell.Select
Me.control1.Value = ActiveCell.Value
Me.control2.Value = ActiveCell.Offset(0, 1).Value '2e cellule
etc.
m@rina
EAB
Messages postés
3
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
5 septembre 2008
5 sept. 2008 à 17:17
5 sept. 2008 à 17:17
bonjour,
Merci M@rina pour ces codes, on se rapproche.
Pour arriver à ce que je souhaite, il faudrait que mon combobox a partir du n° Id selectionné par l'utilisateur me renvois le numero de ligne (correspondant au n°Id unique) sous forme de variable et a partir de la, je pourrait utiliser ton code afin de selectionner la ligne concerner sans que l'utilisateur est a manipuler la base. Tout cela doit etre transparant pour lui.
A default, si j'utilise ton code tel quel, l'utilisateur doit ouvrir la base, selectionner la ligne (il pourrait alors tout autand changer la valeure lui meme.
toutefois il faut que tu sache pour mieux comprendre que cette base est partager par 5 utilisateurs/enregistreurs, par le meme proceder qui me permet de gerer l'acces a cette base, je pourrais en reduire les temps d'ouverture en ecriture et reduire ainsi les interference entre utilisateur.
encore merci pour ton aide.
Merci M@rina pour ces codes, on se rapproche.
Pour arriver à ce que je souhaite, il faudrait que mon combobox a partir du n° Id selectionné par l'utilisateur me renvois le numero de ligne (correspondant au n°Id unique) sous forme de variable et a partir de la, je pourrait utiliser ton code afin de selectionner la ligne concerner sans que l'utilisateur est a manipuler la base. Tout cela doit etre transparant pour lui.
A default, si j'utilise ton code tel quel, l'utilisateur doit ouvrir la base, selectionner la ligne (il pourrait alors tout autand changer la valeure lui meme.
toutefois il faut que tu sache pour mieux comprendre que cette base est partager par 5 utilisateurs/enregistreurs, par le meme proceder qui me permet de gerer l'acces a cette base, je pourrais en reduire les temps d'ouverture en ecriture et reduire ainsi les interference entre utilisateur.
encore merci pour ton aide.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
m@rina
Messages postés
22509
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
7 mai 2025
11 431
10 sept. 2008 à 13:52
10 sept. 2008 à 13:52
Bonjour eab,
On t'aurait un peu oublié ?....
Bon, pour que ton comobox récupère toutes la colonne de données, le mieux est déjà de nommer ta colonne (fais le par macro pour que le nom change en fonction de la taille de la colonne qui va s'agrandir, je suppose).
Ensuite, tu donnes le nom de ta colonne à la propriété Rowsource de ton combobox.
Pour récupérer les données y afférentes, tu peux utiliser des VLOOKUP (tu donneras un nom à la base (dans mon exemple : "bd) :
TextBox1 = Application.VLookup(ComboBox1, [feuil1!bd], 2, False)
TextBox2 = Application.VLookup(ComboBox1, [feuil1!bd], 3, False)
ensuite pour corriger la base à partir du formulaire, tu dois rechercher où se trouve l'item sélectionné dans le combobox. Puis renvoyer le tout dans la base, après avoir cliqué sur un commandbutton :
Private Sub CommandButton1_Click()
Dim a
a = ComboBox1.Value
Cells.Find(What:=a).Activate
ActiveCell.Offset(0, 1).Value = Me.TextBox1.Value '2e cellule
ActiveCell.Offset(0, 2).Value = Me.TextBox2.Value
etc.
end sub
On t'aurait un peu oublié ?....
Bon, pour que ton comobox récupère toutes la colonne de données, le mieux est déjà de nommer ta colonne (fais le par macro pour que le nom change en fonction de la taille de la colonne qui va s'agrandir, je suppose).
Ensuite, tu donnes le nom de ta colonne à la propriété Rowsource de ton combobox.
Pour récupérer les données y afférentes, tu peux utiliser des VLOOKUP (tu donneras un nom à la base (dans mon exemple : "bd) :
TextBox1 = Application.VLookup(ComboBox1, [feuil1!bd], 2, False)
TextBox2 = Application.VLookup(ComboBox1, [feuil1!bd], 3, False)
ensuite pour corriger la base à partir du formulaire, tu dois rechercher où se trouve l'item sélectionné dans le combobox. Puis renvoyer le tout dans la base, après avoir cliqué sur un commandbutton :
Private Sub CommandButton1_Click()
Dim a
a = ComboBox1.Value
Cells.Find(What:=a).Activate
ActiveCell.Offset(0, 1).Value = Me.TextBox1.Value '2e cellule
ActiveCell.Offset(0, 2).Value = Me.TextBox2.Value
etc.
end sub
m@rina
Messages postés
22509
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
7 mai 2025
11 431
10 sept. 2008 à 13:55
10 sept. 2008 à 13:55
Re...
J'ajoute que tout ça fonctionne A CONDITION que les données récupérées dans le combobox soit bien UNIQUES...
m@rina
J'ajoute que tout ça fonctionne A CONDITION que les données récupérées dans le combobox soit bien UNIQUES...
m@rina