Bouton Commande VBA

Résolu/Fermé
vbfuté Messages postés 6 Date d'inscription mercredi 5 décembre 2007 Statut Membre Dernière intervention 12 décembre 2007 - 5 déc. 2007 à 21:52
vbfuté Messages postés 6 Date d'inscription mercredi 5 décembre 2007 Statut Membre Dernière intervention 12 décembre 2007 - 12 déc. 2007 à 11:49
Bonjour,
Je suis à la recherche du code pour modifier une donnée via un bouton de commande.
C'est à dire que l'utilisateur choisit dans la liste puis clique sur modifier, il faut qu'on se place à l'endroit où se trouve la donnée à modifier et qu'on la remplace au même endroit. Autrement dit il y a un travail de recherche à faire pour trouver la donnée dans le tableau excel, et une fois qu'on la trouvée la modification prend place dans le tableau excel ! Je n'arrive pas à faire le code ...
A voir également:

11 réponses

phil232 Messages postés 607 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 31 janvier 2008 178
7 déc. 2007 à 10:54
Résumons donc un peu : tu a une forme Excel qui contient une combo ou une listbox avec certaines données. Ces données sont enregistrées dans le même workbook mais dans un autre onglet (worksheet). Le user clique sur une entrée dans la liste puis il clique sur "Modifier". Le clique doit l'améner à la plage où sont sont stockées ces données. Le module à faire doit donc lire la sélection de la combo ou liste et puis faire un lookup pour touver la cellule qui contient cette données. Le user peut alors modifier le contenu de la cellule et la liste ou combo sont rafraichi pour que les modifs soient aussi visible dans la liste.

Est-ce cela ?
5
vbfuté Messages postés 6 Date d'inscription mercredi 5 décembre 2007 Statut Membre Dernière intervention 12 décembre 2007 2
12 déc. 2007 à 11:49
Merci phil232, j'ai réussi ! tout fonctionne, le projet a été rendu ! merci encore
2
phil232 Messages postés 607 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 31 janvier 2008 178
6 déc. 2007 à 16:22
Application.ActiveWindow.ActiveCell = "My changes"
0
vbfuté Messages postés 6 Date d'inscription mercredi 5 décembre 2007 Statut Membre Dernière intervention 12 décembre 2007 2
6 déc. 2007 à 17:04
Merci phil232 je vais voir ce soir si ça marche !

Mais avant il faut que je trouve comment faire pour que la sélection de ma listbox se retrouve dans la fenêtre de mon userform de modification. C'est à dire que l'utilisateur sélectionne une donnée dans la listbox, il clique sur modifier et là un userform s'ouvre avec dans la zone de texte la donnée qu'il a sélectionné auparavant dans la listbox.

J'avais pensé à faire :

Range("Coordonnées de la cellule contenant la donnée auparavant trouvée via une boucle").Select
Selection.ModifDonnee.txt.Text = Range("Coordonnées de la cellule" ).Value

Mais ça ne marche pas...
0

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

Posez votre question
phil232 Messages postés 607 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 31 janvier 2008 178
6 déc. 2007 à 17:20
Je crois ce cela qui te manque

LOOKUP(lookup_value,lookup_vector,result_vector)

Mais utilise-tu un évenement genre OnClick pour récuperer la donnée ? Ou bien "il clique sur modifier" c'est un bouton dans la forme ?
0
Modifier c'est bien un bouton dans le userform liste des données qui contient une listbox..
0
vbfuté Messages postés 6 Date d'inscription mercredi 5 décembre 2007 Statut Membre Dernière intervention 12 décembre 2007 2
7 déc. 2007 à 11:32
Alors j'ai une application avec plusieurs Userform reliés entre eux. Et à côté j'ai une feuille Excel qui regroupe mes données (par exemple une colonne article et une colonne prix). Une fois l'utilisateur rendu à l'Userform LISTE DES DONNEES, il peut gérer les données : modifier, supprimer... Dans l'Userform il y a une listbox qui est intialisée à l'ouverture de l'Userform, l'utilisateur peut donc choisir dans la listbox la donnée qu'il veut modifier. Une fois qu'il a sélectionné la donnée à modifier dans la listbox, il clique sur le bouton MODIFIER qui ferme l'Userform LISTE DES DONNEES et ouvre un autre UserForm MODIFICATION. Cet Userform contient une txtBox article et une txtBox prix (dans mon exmple), ainsi que deux boutons Valider et Annuler.
Je veux que quand l'Userform MODIFICATION s'ouvre, les 2 txtBox soient remplis en fonction du choix de l'utilisateur.
Imaginons qu'il est choisit dans la listbox LISTE DES DONNEES l'article "écran", quand l'Userform MODIFICATION s'ouvre, la txtBox article contient "écran" et la txtBox prix "179€". Pour cela il aura donc fallu que quand l'utilisateur clique sur Modifier dans l'Userform LISTE DES DONNEES, on aille chercher dans la colonne article de excel l'écran et qu'on ramène les informations contenues dans les cellules des 2 colonnes dans les 2 txtBox.
j'espère que j'ai bien décrit la commande qui me pose problème au niveau du code.
0
vbfuté Messages postés 6 Date d'inscription mercredi 5 décembre 2007 Statut Membre Dernière intervention 12 décembre 2007 2
7 déc. 2007 à 11:35
Ah j'ai oublié !
Une fois que l'utilisateur à fait ses modifications dans les 2txtBox, il clique sur Valider, et il faut que ses modifications remplacent les anciennes données au même endroit dans les colonnes excel. On remplace donc les valeurs des cellules.
0
phil232 Messages postés 607 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 31 janvier 2008 178
7 déc. 2007 à 13:23
Hmmmm, ceci est alors une application de base de données. Primo Excel est un mauvais choix pour ça. Access serait déjà un pas dans la bonne direction (bien que c'est ne pas le meilleure mais pour une petite entreprise ça peut aller).

1. Ajoute une colonne "ID" car au moins une des valeurs sera changé il se peut que tu ne trouverais plus que est-ce qui a été changé
2. Il faut que qq chose se souvienne de la valeur à modifié car elle se trouve dans un autre formulaire.
Sur OnClick du bouton modifier :

Dim f as Form

set f = new Form
f.Show
f.txtID = me.txtID
f.txtArticle = me.txtArticle
f.txtPrix = me.txtPrix

3. Après modif il faut chercher l'ancienne valeur avec l'ID et modifier les cellules adjacentes.

Très onéreux on Excel. En principe il faudrait remplacer Excel contre une base de donnée. C'est nettement plus facile de gérer ses données dedans. Et si c'est pour le fonctions de calcul on peut toujours faire un lien vers la bdd et transferer le nécessaire.
0
vbfuté Messages postés 6 Date d'inscription mercredi 5 décembre 2007 Statut Membre Dernière intervention 12 décembre 2007 2
7 déc. 2007 à 14:11
Je suis obligée de faire sous Excel...
Par contre, par rapport au code que tu me propose, suis-je obligée de mettre ID ? Parce que je 'nai pas besoin d'avoir un historique de mes modifications. Moi je pensais faire une boucle de recherche dans la colonne qui correspond à ce qu'à choist l'utilisateur. Une fois qu'il a trouvé l'article, l'integer étant mémorisé, j'ai le prix. Et c'est à ce moment là que je dis que la valeur de la cellule = txtBox.
J'ai déjà la boucle de recherche, il me manque juste l'affichage dans les listbox de ce qu'a trouvé la boucle de recherche puis le remplacement après modification. Je vais essayer ça maintenant, merci !
0
phil232 Messages postés 607 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 31 janvier 2008 178
7 déc. 2007 à 14:15
au lieu de l'ID tu peux aussi mémoriser la cellule dans une variable variant
0