Difficultés à la programmation du code VBA sur excel

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

Configuration: Windows / Chrome 77.0.3865.120

8 réponses

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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
    0
    1. Juanitobz1990
       
      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
      0
  2. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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
    0
    1. Juanitobz1990
       
      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.
      0
  3. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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
    0
    1. Juanitobz1990
       
      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.
      0
  4. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Désolé, un oubli !!
    https://mon-partage.fr/f/15jiubpk/
    0
    1. Juanitobz1990
       
      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.
      0
    2. Juanitobz1990
       
      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.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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
    0
    1. Juanitobz1990
       
      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 .
      0
  7. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour

    Voilà donc la version avec date et utilisation (même mdp)
    https://mon-partage.fr/f/4FI5LmJz/

    Me dire si ça te convient

    0
    1. Juanitobz1990
       
      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.
      0
  8. aimara974 Messages postés 17 Statut Membre
     
    bonjour
    j ai quasiment le même probleme Via55 pourrais tu me donné le code pour acceder au lien
    merci
    0
  9. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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
    0