Difficultés à la programmation du code VBA sur excel
Juanitobz1990
-
Juanitobz1990 -
Juanitobz1990 -
Bonjour à tous et à toutes,
j'ai un tableau sur excel contenant la liste des moteurs(type, marque, puissance,vitesse de rotation etc), j'aimerai créer un bouton appelé SORTIE, à chaque fois que je selectionne une ligne du tableau puis en cliquant sur SORTIE, j'aimerai qu'il transfère toutes les données de cette ligne sur une autre feuille excel, qui va regrouper les différents moteurs sortis du magasin.
merci beaucoup
j'ai un tableau sur excel contenant la liste des moteurs(type, marque, puissance,vitesse de rotation etc), j'aimerai créer un bouton appelé SORTIE, à chaque fois que je selectionne une ligne du tableau puis en cliquant sur SORTIE, j'aimerai qu'il transfère toutes les données de cette ligne sur une autre feuille excel, qui va regrouper les différents moteurs sortis du magasin.
merci beaucoup
Configuration: Windows / Chrome 77.0.3865.120
8 réponses
-
Bonsoir
Plus simple qu'un bouton (qui nécessite 2 manips : sélectionner la ligne puis cliquer sur le bouton pour lancer la macro de transfert) un double-clic sur la ligne voulue peut lancer la macro de transfert
Pour établir correctement la macro il faut un exemple de ton fichier et de sa structure exacte, que tu postes sur mon-partage.fr, tu copies le lien créé et tu reviens le coller ici
Cdlmnt
Via
-
La macro doit tenir compte de la structure de ton fichier (nombre de colonnes, de lignes ...) c'est pour cela que je te demandais de fournir un exemple de ton fichier en allant sur le site mon-partage.fr, en postant dessus ton fichier, ce qui crée un lien que tu copies alors et que tu reviens coller ici et qui me permettra de télécharger ton fichier car expliquer comment bâtir le code de la macro surtout que tu dis être novice, c'est pas évident !!
Je peux te faire un exemple sur un fichier bidon mais ce sera à toi de l'adapter ensuite à ton fichier sinon si j'ai ton fichier je te crée directement la macro dessus
-
Bonjour Juanito
Ton fichier avec la macro de transfert
Un double -clic sur n’importe quelle cellule de la ligne à transférer lance la macro
ALT + F11 pour voir la macro commentée
Si tu changes le nom de la 2eme feuille que j'ai appelée Sortis, bien changer aussi cenom dans toutes les lignes de la macro qui le contiennent
Cdlmnt
Via
-
Désolé, un oubli !!
https://mon-partage.fr/f/15jiubpk/
-
BONSOIR VIA55,
merci beaucoup pour le lien.
Cependant j'ai du mal à écrire correctement le code sur l'original.
ci joint le fichier original avec un exemple du code que j'ai saisi.
le soucis est qu'a chaque fois que je veux créer une macro pour chaque ligne, il écrase les données sur la ligne au niveau de la feuille sortie stock.
ci joint le lien : https://mon-partage.fr/f/MKibWJ5L/
mdp: via55
merci.
NB:
Désolé vraiment, je débute sur excel avec les macro et autres, donc c'est un peu plus dur pour moi.
la présence du bouton, dans l'esprit c'est pour faciliter la manipulation pour des collegues. -
bonsoir via55,
en cliquant sur le bouton sortie, il transfere certes la ligne sélectionnée sur la feuille sortie stock, mais écrase la ligne qui était precedemment sortie, alors qu'il devait attaquer la ligne suivante.
c'est un peu compliqué, j'ai procédé en créant pour chaque ligne une macro, tout en veillant à sélectionner la ligne qui devrait réceptionner les données, mais rien ne se passe coe prévu.
si tu peux m'aider à voir plus clair ca serait super.
Merci.
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Re
Il faut une instruction dans le code qui repère d'abord la 1ere ligne vide, c'est ce que fait ma ligne :ligne2 = Sheets("SORTIE STOCK").Columns(10).Find("*", , , , xlByColumns, xlPrevious).Row + 1
J'ai basée cette recherche sur la colonne J car c'est la seule pour laquelle il y a une valeur pour chaque moteur
https://mon-partage.fr/f/ICzPy52x/
même mdp
Le double-clic est préférable au bouton car on cible immédiatement la ligne à transférer
avec un bouton il faudrait que la macro ouvre d'abord une boîte de message pour demander le n° de la ligne à transférer.
Ensuite je vois dans ton fichier que la feuille SUIVI comporte 2 autres colonnes, date de sortie et utilisation, ce serait bien que la macro remplisse ces 2 colonnes soit automatiquement avec la date du jour soit en demandant quelle date inscrire puis en demandant d'entrer pour quelle utilisation
Fais moi savoir si tu veux procéder ainsi, je compléterai la macro
-
Bonjour via55 ,
Effectivement les colonnes date & utilisation doivent être remplies .
Je pensais le faire manuellement ; mtn si tu penses qu'il faut faire une macro pour le faire automatiquement en prenant la date du jour je trouve ça une bonne idée.
Ok pour le double clic sur la ligne au lieu du bouton.
Merci via55 .
-
-
Bonjour
Voilà donc la version avec date et utilisation (même mdp)
https://mon-partage.fr/f/4FI5LmJz/
Me dire si ça te convient
-
bonjour
j ai quasiment le même probleme Via55 pourrais tu me donné le code pour acceder au lien
merci -
Bonjour
voilà le code de la macro mise dans la worsheet de la feuille des données à transfererPrivate Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) ligne = Target.Row ' ligne du double-clic If ligne < 17 Or Range("I" & ligne) = "" Then Exit Sub ' sortie sans rien faire si ligne avant la 17 ou si vide en colonen I util = InputBox("Si vous confimez le transfert à la date d'aujourdh'hui de la ligne " & ligne & Chr(10) & "(Moteur " & Range("C" & ligne) & " Type " & Range("D" & ligne) & ")" & Chr(10) & "entrer ci-dessous l'utilisation du moteur, sinon Annuler", "CONFIRMATION transfert") If util = "" Then Exit Sub Range("B" & ligne & ":" & "J" & ligne).Select 'selectionne la ligne et la copie Application.CutCopyMode = False Selection.Cut Sheets("SORTIE STOCK").Select ' selectionne la feuille Sortis ligne2 = Sheets("SORTIE STOCK").Columns(10).Find("*", , , , xlByColumns, xlPrevious).Row + 1 ' 1ere ligne vide en colonne J de la feuille Sheets("SORTIE STOCK").Range("C" & ligne2).Select ' se positionne en col A sur la 1ere ligne vide et insere ligne copiée Selection.Insert Shift:=xlDown Sheets("SORTIE STOCK").Range("L" & ligne2) = Date ' inscription date Sheets("SORTIE STOCK").Range("M" & ligne2) = util ' inscription utilisation Sheets("MENU GENERAL").Select ' reselectionne la 1ere feuille Sheets("MENU GENERAL").Rows(ligne & ":" & ligne).Select ' selectionne la ligne du double-clic et la supprime Selection.Delete Shift:=xlUp MsgBox "Transfert effectué" End Sub
Quasiment donc pas pareil, une macro est adaptée à un fichier
Pour voir ce qui conviendrait au tien il faut fournir le fichier en le postant sur mon-partage.fr, en copiant le lien créé et en revenant le coller ici
Cdlmnt
Via