Difficultés à la programmation du code VBA sur excel

- - Dernière réponse :  Juanitobz1990 - 27 oct. 2019 à 15:39
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

Configuration: Windows / Chrome 77.0.3865.120
Afficher la suite 

8 réponses

Messages postés
11348
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
17 novembre 2019
1508
0
Merci
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
-
Merci beaucoup d'avoir pris le temps de répondre via55.
Sincèrement je suis novice sur excel, est ce que c'est possible de me donner des étapes pour créer la macro de transfert?
je n'ai pas bien saisi la seconde partie de votre commentaire.
merci
Commenter la réponse de via55
Messages postés
11348
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
17 novembre 2019
1508
0
Merci
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 via55
Merci encore pour l'idée sur le partage de fichiers
Voici le lien : https://mon-partage.fr/f/CsdN7MFe/
J'attends de vos nouvelles.
Merci beaucoup.
Commenter la réponse de via55
Messages postés
11348
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
17 novembre 2019
1508
0
Merci
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
-
Bonjour via55

je lis bien ton commentaire, mais je ne vois pas de lien me renvoyant vers le fichier sur lequel tu as modifié.
est ce que c'est possibl de m'éclairer sur ce point.
merci.
Commenter la réponse de via55
Messages postés
11348
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
17 novembre 2019
1508
0
Merci
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.
Commenter la réponse de via55
Messages postés
11348
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
17 novembre 2019
1508
0
Merci
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 .
Commenter la réponse de via55
Messages postés
11348
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
17 novembre 2019
1508
0
Merci
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 via55,

Désolé du retard.

Je tiens à te remercier sincèrement pour l'aide apportée.

Grâce à toi, je développe petit à petit mes connaissances sur excel.

Merci bien .

A très bientôt.

Cordialement.
Commenter la réponse de via55
Messages postés
17
Date d'inscription
dimanche 27 octobre 2019
Statut
Membre
Dernière intervention
1 novembre 2019
0
Merci
bonjour
j ai quasiment le même probleme Via55 pourrais tu me donné le code pour acceder au lien
merci
Commenter la réponse de aimara974
Messages postés
11348
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
17 novembre 2019
1508
0
Merci
Bonjour

voilà le code de la macro mise dans la worsheet de la feuille des données à transferer
Private 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
Commenter la réponse de via55