Rechercher : dans
Par :

Bouton Commande VBA

Dernière réponse le 12 déc 2007 à 11:49:36 vbfuté, le 5 déc 2007 à 21:52:53 
 Signaler ce message aux modérateurs

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 ...

Configuration: Windows XP
Firefox 2.0.0.11

Meilleures réponses pour « Bouton Commande VBA » dans :
VBA Ajouter commandButton et le code qui va avec VoirCode relativement simple et qui ne nécessite pas d'explication complémentaire. Coller ces deux sub dans un module général (Module1 par exemple). Sub CréerBouton() Dim Obj As Object Dim Code As String Sheets("Feuil1").Select 'crée le...
VBA Un timer une seconde tout simple VoirEn VBA, il n'y a pas (du moins à ma connaissance) de composant Timer. On peut en créer un très facilement. Dans un module de feuille Activer/ dés activer le timer : Placer un bouton sur Feuil1 et mettre le code... Private Sub...
Exécuter une macro VoirExécuter une macro Excel et Calc proposent plusieurs façons d’exécuter une macro : en la sélectionnant dans une liste, dans la boîte de dialogue Macro ; par un raccourci clavier ; en l’attachant à un bouton de la barre d’outils ; ...

1

phil232, le 6 déc 2007 à 16:22:15

Application.ActiveWindow.ActiveCell = "My changes"

Répondre à phil232

2

vbfuté, le 6 déc 2007 à 17:04:15

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...

Répondre à vbfuté

3

phil232, le 6 déc 2007 à 17:20:05

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 ?

Répondre à phil232

4

vbfuté, le 6 déc 2007 à 21:20:58

Modifier c'est bien un bouton dans le userform liste des données qui contient une listbox..

Répondre à vbfuté

5

phil232, le 7 déc 2007 à 10:54:54
  • +1

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 ?

Répondre à phil232

6

vbfuté, le 7 déc 2007 à 11:32:43

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.

Répondre à vbfuté

7

vbfuté, le 7 déc 2007 à 11:35:01

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.

Répondre à vbfuté

8

phil232, le 7 déc 2007 à 13:23:59

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.

Répondre à phil232

9

vbfuté, le 7 déc 2007 à 14:11:07

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 !

Répondre à vbfuté

10

phil232, le 7 déc 2007 à 14:15:16

Au lieu de l'ID tu peux aussi mémoriser la cellule dans une variable variant

Répondre à phil232

11

 vbfuté, le 12 déc 2007 à 11:49:36
  • +3

Merci phil232, j'ai réussi ! tout fonctionne, le projet a été rendu ! merci encore

Répondre à vbfuté