inserer bouton chaque ligne avec userform qui pre rempli en fonction ligne

carlitostyle

XLDnaute Junior
Bonjour a toute la communauté.:)
Je suis novice dans le vba mais j'éssaie de m'y pencher de plus en plus. Aujourd'hui j'ai un probléme que je n'arrive pas a résoudre avec les autres sujet du forum.

Je souhaite ajouter un bouton à la fin de chaque ligne de la feuille "ficheresponsableachat". Ce bouton va ouvrir un userform et ce dernier aura des champ pre rempli en fonction de la ligne en question.
Tel que le nom, la quantité, et le produit qui lui sera prit dans la feuille " etatdustock". Pour le moment je faisai ça manuelement et tout fonctionné mais cette methode permettrai de ne pas avoir a tout remplir les champs.


J'éspère que vous pourrez m'aider cela fais depuis deux jour que je plenche la dessus et cela m'enleverai une épine du pied. Merci beaucoup. et bonne journée
 

Pièces jointes

  • Processus achatcarlitostyle.xls
    171.5 KB · Affichages: 126
  • Processus achatcarlitostyle.xls
    171.5 KB · Affichages: 146
  • Processus achatcarlitostyle.xls
    171.5 KB · Affichages: 143

WUTED

XLDnaute Occasionnel
Re : inserer bouton chaque ligne avec userform qui pre rempli en fonction ligne

Bonjour carlitostyle,

Voici un début de piste pour ce que tu veux faire :
VB:
Sub CreationBouton()
    For i = 1 To Sheets("Ficheresponsableachat").Range("A65536").End(xlUp).Row
        Sheets("Ficheresponsableachat").Buttons.Add(Range("K" & i).Left, Range("K" & i).Top, Range("K" & i).Width * 2, Range("K" & i).Height).Select
        Selection.Characters.Text = "Traiter la demande"
        Selection.OnAction = "'traiterlademande " & i & " '"
    Next
End Sub

Cette macro te permet de créer un bouton sur chaque ligne avec le côté gauche coïncidant avec le côté gauche de la colonne K, de la même hauteur que la ligne courante et de largeur K*2. De plus, j'affecte ta macro traiterlademande() avec en paramètre la ligne courante à chaque nouveau bouton. Il ne te reste plus qu'à modifier ta macro traiterlademande() pour qu'elle accepte un paramètre ainsi que tes Usf pour qu'ils récupère les données en fonction de ton paramètre.

Bonne journée,
WUTED
 
Dernière édition:

carlitostyle

XLDnaute Junior
Re : inserer bouton chaque ligne avec userform qui pre rempli en fonction ligne

Bonjour carlitostyle,

Voici un début de piste pour ce que tu veux faire :
VB:
Sub CreationBouton()
    For i = 1 To Sheets("Ficheresponsableachat").Range("A65536").End(xlUp).Row
        Sheets("Ficheresponsableachat").Buttons.Add(Range("K" & i).Left, Range("K" & i).Top, Range("K" & i).Width * 2, Range("K" & i).Height).Select
        Selection.Characters.Text = "Traiter la demande"
        Selection.OnAction = "traiterlademande"
    Next
End Sub

Cette macro te permet de créer un bouton sur chaque ligne avec le côté gauche coïncidant avec le côté gauche de la colonne K, de la même hauteur que la ligne courante et de largeur K*2. De plus, j'affecte ta macro traiterlademande() avec en paramètre la ligne courante à chaque nouveau bouton. Il ne te reste plus qu'à modifier ta macro traiterlademande() pour qu'elle accepte un paramètre ainsi que tes Usf pour qu'ils récupère les données en fonction de ton paramètre.

Bonne journée,
WUTED


MErci Wuted, toujours au top et rapide :)
J'éssaie de comprendre le code que tu m'as fourni mais je suis un peu dans le floue. Pourais-tu m'en dire davantage.
C'est le moment ou je dois regler les paramètres.. Merci
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : inserer bouton chaque ligne avec userform qui pre rempli en fonction ligne

Bonjour CarlitoStyle, bonjour le forum,

À quoi servent les références si elles sont différentes sur chaque onglet !?
Je pensais te proposer une solution avec une macro événementielle qui agirait au double-clic dans une cellule de la ligne concernée (pour éviter la multiplication inutiles des boutons). Elle récuèrerait la réfécence dans la colonne F, puis elle ouvrirait l'Userform et le mettrait à jours en regardant cette référence dans l'onglet Etatdustock. Mais, comme dit plus haut, les références sont farfelues...
Fait l'effort d'envoyer un fichier cohérent et je ferai l'effort de m'y pencher dessus.
 

WUTED

XLDnaute Occasionnel
Re : inserer bouton chaque ligne avec userform qui pre rempli en fonction ligne

Re, bonjour Robert

Tu feras attention, j'ai édité mon code, il faut utiliser la dernière mise à jour. En gros, mon code crée sur chaque ligne non-vide de ton tableau, au niveau de la colonne K, un bouton auquel j'affecte la macro traiterlademande avec en paramètre le numéro de la ligne, j'ai un peu modifié traiterlademande du coup avec :

VB:
Sub traiterlademande(i As String)
    Sheets("Ficheresponsableachat").Range("A" & i).Select
    UserForm1.Show
End Sub

Je fais un Select sur la cellule Ai, ça me permet d'accéder au numéro de ligne dans le code de l'Usf en faisant un Selection.Row.
Voilà, à partir de là, ton Usf a accés au numéro de ligne, donc aux données de la ligne courante dans ta feuille. J'ai voulu faire un exemple plus concret mais comme l'a dit Robert, j'ai un peu de mal à comprendre la façon de fonctionner de ton fichier.
 

carlitostyle

XLDnaute Junior
Re : inserer bouton chaque ligne avec userform qui pre rempli en fonction ligne

Merci Robert et Wuted. Vous me rendez un grand service de vous pencher sur mon problème. C'est vrai cela fais une semaine en partant de 0 que je suis sur vba avec excel et je lutte pour arriver a faire un petit process qui m'a été demandé.

Je comprend que c'est confu et que vous aviez du mal a m'aider tant je suis maladroit dans mes saisi vba.
J'aimerai quand meme vous expliquer le concept du fichier au moins vous comrpendrez d'avantage et si c'est dans vos cordes de m'aider ca serai géniale.

Quand quelqu'un ouvre le fichier il rempli un formulaire " une demande d'achat" cette demande d'achat est retranscrite en une ligne dans "ficheresponsableachat"

Ce fichier sera ouvert le soir par la responsabledesachats. Qui ira dans paramétre et acccedera en premier a " fiche responsable achat ".

Elle pourra voir les demandes d'achats qui on étaient faites. Le top serai qu'elle click sur un bouton comme m'a dis wuted qui serai pourquoi pas colonne K. Qui ferai apparaitre l'userform1 ( pour traiter la ligne de demande ). Avec les champs de la ligne correspondante qui seraient pré rempli.

[ Parallélement au traitement de la demande le stock est actualisé ( " etatdustock" ) ].

Puis une fois que c'est fini la ligne se coupe et une nouvelle ligne est crée grâce à l'userform1 dans la feuille "demandetraitee".
Ensuite dans la feuille colonne G (statut) on met Accepté ou Refusé et BIM la ligne se colorie et va s'inscrire dans les feuille accepté ou refusé.


Voilà :) Je vous renvoi un fichier qui j'éspére sera plus "propre". J'ai ce travail a rendre à la fin de semaine et je commence a ne plus avoir trop d'ongle ^^

Bonne après- midi :)
 

Pièces jointes

  • Processus achat test V2.xls
    157 KB · Affichages: 111

Robert

XLDnaute Barbatruc
Repose en paix
Re : inserer bouton chaque ligne avec userform qui pre rempli en fonction ligne

Bonjour le fil, bonjour le forum,

Dans un premier temps, voici une proposition qui fonctionne en double-cliquant dans une cellule non vide. L'UserForm1 s'ouvre avec les données de la ligne où tu as double-cliqué. Pas besoin de boutons qui ne font qu'alourdir le ficher...
Le code se trouve dans le composant VBA Feuil2(Ficheresposableachat) :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'au double-clic dans une cellule
Dim r As Range 'déclare la variable r (Recherche)
Dim li As Integer 'déclare la variable li (LIgne)

If Target.Value = "" Then Exit Sub 'si la cellule double-cliquée est vide, sort de la procédure
Cancel = True 'évite le mode édition lié au double-clic
ref = CStr(Cells(Target.Row, 6).Value) 'définit la référence ref (variable déclarée publique dans le module1)
With Sheets("Etatdustock") 'prend en compte l'onglet "Etatdustock"
    Set r = .Columns(1).Find(ref, , xlValues, xlWhole) 'définit la recherche r
    If Not r Is Nothing Then 'condition : si il existe au moins une occurrence
        li = r.Row 'définit la ligne li
    Else 'sinon
        MsgBox "Référence non trouvée !" 'message
        Exit Sub 'sort de la procédure
    End If 'fin de la condition
    UserForm1.llstock.Caption = .Cells(li, 4).Value 'renseigne le label "Quantité"
    UserForm1.llreference.Caption = .Cells(li, 1).Value 'renseigne le label "Référence"
    UserForm1.llprix.Caption = .Cells(li, 3).Value 'renseigne le label "Prix"
    UserForm1.llprix = Format(UserForm1.llprix, "#,##0.00")
    UserForm1.Show 'affiche l'UserForm1
End With 'fin de la prise en compte de l'onglet "Etatdustock"
End Sub

Je ne comprends pas pourquoi la quantité doit être saisie alors qu'elle a déjà été donnée lors de la Demande d'achat et qu'elle figure dans la colonne H ???
 

Pièces jointes

  • CarlitoStyle_v01.xls
    158 KB · Affichages: 92
Dernière édition:

carlitostyle

XLDnaute Junior
Re : inserer bouton chaque ligne avec userform qui pre rempli en fonction ligne

[/CODE]

Je ne comprends pas pourquoi la quantité doit être saisie alors qu'elle a déjà été donnée lors de la Demande d'achat et qu'elle figure dans la colonne H ???


Merci Robert c'est une très bonne altérnative aux boutton. C'est parfait. Et oui je comprend ce que tu veux dire pour les quantitées. Mais ce que je voudrai faire c'est que lorsque je double click sur une cellule vide d'une ligne. L'userform qui s'ouvre reprennent la quantitée dans la colonne H et aussi le nom, . Parce que c'est cet userform qui va recréer une ligne dans "commandetraitee".

Pense tu qu'il y ai un moyen ?

Merci :)
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : inserer bouton chaque ligne avec userform qui pre rempli en fonction ligne

Bonjour le fil, bonjour le forum,

Tu le voudrais où le nom ? Dans la ComboBox1 ? si oui, pourquoi une ComboBox et pas une TextBox...
 

carlitostyle

XLDnaute Junior
Re : inserer bouton chaque ligne avec userform qui pre rempli en fonction ligne

Merci robert cette version 2 correspond a mes attentes ! c'est parfait un grand merci. Cepdnant lorque le stock est vide pour un produit. Je met a la quantité puis "commander" et j'observe un blocage de l'application. qu'est-ce que tu en pense ?

:)
 

carlitostyle

XLDnaute Junior
Re : inserer bouton chaque ligne avec userform qui pre rempli en fonction ligne

Dans ma feuille "etatdustock" il y a le stock restant de mes produits.
Ainsi lorsque je traite une demande avec l'userform1 j'enlève des produits de ce stock. Puis pour pousser a l'extrême lorsque je retire tout les produits de mon stock il y a le bouton "commander" qui apparait. Et a ce moment là lorsque je met 10 par exemple et que je click sur commander. Normalement il devrait s'ajouter 10 unité de ce produits dans la feuille de stock et marqué une ligne " MR STOCK" dans la feuille "demandetraitee".

Et c'est au moment où je click sur commander qu'il apparait un message de blocage. et ça me souligne en jaune une ligne dans ma fenêtre VBA.

J'éspère que tu as compris. Merci encore de m'aider dans ces codage.:)
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : inserer bouton chaque ligne avec userform qui pre rempli en fonction ligne

Bonjour CarlitoStyle, bonjour le forum,

Si je t'ai demandé un fichier avec exemple c'est que chez moi je n'ai pas le bouton Commander qui s'affiche donc je ne peux pas comprendre ton problème... Puis quant tu dis : ça me souligne en jaune une ligne dans ma fenêtre VBA. Il serait préférable que tu m'indiques le code complet et la ligne qui pose problème...
 

carlitostyle

XLDnaute Junior
Re : inserer bouton chaque ligne avec userform qui pre rempli en fonction ligne

Bonjour CarlitoStyle, bonjour le forum,

Si je t'ai demandé un fichier avec exemple c'est que chez moi je n'ai pas le bouton Commander qui s'affiche donc je ne peux pas comprendre ton problème... Puis quant tu dis : ça me souligne en jaune une ligne dans ma fenêtre VBA. Il serait préférable que tu m'indiques le code complet et la ligne qui pose problème...


Bonjour Robert et la communauté XLD !

Pour le fichier c'est la version V2 que tu m'as envoyé hier soir. Et pour que tu vois ou ça bloque j'ai choisi de faire des screenshots. Le 1,2,3 dans l'ordre.
le problème intervient lorsque je change la textbox llquantite. donc je pense que le code plante à llquantite_change.


Je suis là pour la moindre question. merci encore robert de m'aider :)
 

Pièces jointes

  • 2.jpg
    2.jpg
    73.2 KB · Affichages: 237
  • 1.jpg
    1.jpg
    71.5 KB · Affichages: 180
  • 3.jpg
    3.jpg
    68.9 KB · Affichages: 157
  • 2.jpg
    2.jpg
    73.2 KB · Affichages: 235
  • 1.jpg
    1.jpg
    71.5 KB · Affichages: 177
  • 3.jpg
    3.jpg
    68.9 KB · Affichages: 169
  • 2.jpg
    2.jpg
    73.2 KB · Affichages: 193
  • 1.jpg
    1.jpg
    71.5 KB · Affichages: 138
  • 3.jpg
    3.jpg
    68.9 KB · Affichages: 160

Discussions similaires

Statistiques des forums

Discussions
312 240
Messages
2 086 517
Membres
103 239
dernier inscrit
wari