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
Bonjour a tous,

je vient de terminer une petite applie en vba excel ou au travers d'un formulaire, j'enregistre une 60aine de données dans un autre classeur excel.
ces enregistrement sont identifiés par un numero unique en cellule c3, puis le reste de l'enregistrement en d3,e3....
Mes enregistrement ce place donc a suivre ligne par ligne....

Je souhaite maintenant pouvoir reprendre un de ces enregistrements, et pouvoir modifier l'une des rubriques renseignées et réenregistrer le tout à sa place initiale. Et la, je suis bloqué.

plus clairement, mon formulaire alimente la page d'un autre classeur de la sorte:
entete:Ligne 2: C2=N° ID, D2=Nom, E2=Prenom....(60 données en ligne)
Ligne 3: 1; Tartuff; david; ....
Ligne 4: 2; Louve; Eric;....

je souhaite pouvoir reprendre par exemple la ligne 4 en effectuant une recherche par n0 ID, modifier Eric par Ludo et réenregister la modification à sa place en ligne 4

pouvez-vous m'aider
( mon niveau en VBA = 2/10)
merci a tous
A voir également:

8 réponses

m@rina Messages postés 20169 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 6 mai 2024 11 278
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
0
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
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
0
m@rina Messages postés 20169 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 6 mai 2024 11 278
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
0
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
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour a tous,

je suis toujours a la recherche d'une solution,
quelqu'un peut il m'aider?

merci
0
m@rina Messages postés 20169 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 6 mai 2024 11 278
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
0
m@rina Messages postés 20169 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 6 mai 2024 11 278
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
0
bonjour M@rina,

merci pour cette réponse,
j'essaie de mettre cela en pratique et je te tient au courant.

mes données sont bien unique puisque incrémentée automatiquement à chaque enregistrement.

merci pour ton soutient
0