Problème de Macro

daniel22 Messages postés 335 Date d'inscription   Statut Membre Dernière intervention   -  
daniel22 Messages postés 335 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
J'ai un classeur excel comprenant deux onglets.
Le premier "Facture" et le deuxième "Listing".
Je souhaiterais que, via une macro, les données N° facture, date, destinataire et montant de l'onglet "Facture" soient injectés dans la feuille "Listing"

Je suis en excel 2016 et je débute dans les macros...

Merci d'avance.

--

daniel22

6 réponses

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    il faut faire une boucle sur toutes les lignes de la feuille Facture voir ceci:

    https://www.developpez.net/forums/d605223/logiciels/microsoft-office/excel/contribuez/boucles-parcourir-colonne-ligne-plage-donnees-2-methodes/

    Tu fais Alt F11 sur ta feuille Facture pour accéder à l'éditeur, tu insères un module dans lequel tu mets ce code:

    Sub For_X_to_Next_Ligne()
    Dim FL1 As Worksheet, FL2 As Worksheet, NoCol As Integer
    Dim NoLig As Long, Var As Variant
        Set FL1 = Worksheets("Facture")
         Set FL2 = Worksheets("Listing")
        NoCol = 1 'lecture de la colonne A
        For NoLig = 1 To Split(FL1.UsedRange.Address, "$")(4) 'mettre à la place du 1 ta cellule de départ
            Var = FL1.Cells(NoLig, NoCol)
           FL2.Cells(NoLig, NoCol) = FL1.Cells(NoLig, NoCol)
            FL2.Cells(NoLig, NoCol + 1) = FL1.Cells(NoLig, NoCol + 1)
             FL2.Cells(NoLig, NoCol + 2) = FL1.Cells(NoLig, NoCol + 2)
              FL2.Cells(NoLig, NoCol + 3) = FL1.Cells(NoLig, NoCol + 3)
        Next
        Set FL1 = Nothing
    End Sub
    


    Tu reviens sur ta feuille Facture
    Tu vas dans le Ruban Developpeur Inserer un Bouton Control Formulaire, tu le mets sur ta feuille, une boite de message s'ouvre, tu sélectionnes For_X_to_Next_Ligne

    La macro est opérationnelle

    Tu enregistres Classeur Excel prenant en charge les macros

    0
  2. daniel22 Messages postés 335 Date d'inscription   Statut Membre Dernière intervention   4
     
    Bonjour Le Pivert,
    Merci d'avoir répondu.

    Comme je l'ai dit dans ma question, le débute avec les macros....

    J'ai deux questions : dans ta formule, je ne distingue pas ou tu désignes les données que j'ai besoin (n° facture, montant, ...)
    Que veux tu dire par : tu insères un module... car quand je fais Alt F11 j'ai déja 2 macros..

    0
    1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      voilà un exemple

      https://www.cjoint.com/c/IAxj4FxxiQQ
      0
  3. daniel22 Messages postés 335 Date d'inscription   Statut Membre Dernière intervention   4
     
    Je ne suis sans doute pas très doué, mais je ne comprend pas.
    Je joins un modèle de ce que je souhaiterais avoir...
    https://www.cjoint.com/c/IAyjsheLx04

    Merci pour ton aide

    0
    1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      Cela ne ressemble à rien!!!!

      Quelle est la logique????

      Pour faire une macro, il faut une certaine logique. Là il n'y a aucune colonne référencée!
      Aucune ligne non plus.

      Poste un classeur avec plusieurs noms pour comprendre la logique des saisies

      @+
      0
    2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      aucune amélioration dans la compréhension!!!!

      Où sont les noms dans la feuille Facture: VAN BELLE et DE MIL ???

      Où sont les villes dans la feuille Facture: TOURNAI et BRUXELLES???

      pour pouvoir les retranscrire dans la feuille Listing

      C'est du grand n'importe quoi
      0
    3. daniel22 Messages postés 335 Date d'inscription   Statut Membre Dernière intervention   4
       
      Désolé, je ne comprend pas ce que tu désires avoir ….
      La feuille facture représente une seule facture.(la n° 121)
      A la facture 122 les données seront autres.

      Me suis-je bien exprimé ? désires-tu autre chose ?

      Merci
      0
    4. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      Pour que cela fonctionne, il faut qu'impérativement les données de la Feuille Facture soient dans les mêmes cellules:

      https://www.cjoint.com/c/IAymVTc0beQ

      @+
      0
  4. daniel22 Messages postés 335 Date d'inscription   Statut Membre Dernière intervention   4
     
    Erreur de compilation.
    Instruction incorrecte dans une procédure.
    ....
    0
    1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      Sans plus de précision, impossible de te répondre.
      Expose le problème que tu rencontres, en expliquant ce que tu veux obtenir.

      .....
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. daniel22 Messages postés 335 Date d'inscription   Statut Membre Dernière intervention   4
     
    REbonjour et désolé pour le dérangement,
    J'ai essayé de comprendre mais ….c'est pas brillant…(en même temps, à mon âge...on a plus 20 ans)

    Dans le fichier que tu m'as transmis, j'ai fais ALT F11...mais je ne vois rien à l'exception d'un carré.

    Dans le fichier que je transmets maintenant, j'ai essayer de mettre le code….mais problème ,ça ne fonctionne pas et je ne trouves pas la solution.

    En résumé, l'impression semble marcher, mais je souhaiterais 2 exemplaires au lieu de 1.

    Delete + N° semble fonctionner.

    Sauvegarde : doit sauvegarder dans la feuille "N°" les données reprises en tête de colonne, une ligne par facture.

    Merci d'avance pour ton aide.

    https://www.cjoint.com/c/IBbjeUk6brx

    0
    1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      Ce n'est pas sérieux, je t'ai posté un classeur qui fonctionne ici et tu n'en tiens pas compte!

      https://forums.commentcamarche.net/forum/affich-35823061-probleme-de-macro#13

      on trouve ce code:

      Private Sub CommE18()
      End Sub
      
      Option Explicit
      Private Sub CommandButton1_Click()
      Dim FL1 As Worksheet, FL2 As Worksheet
      Dim ligne As Long 'dernière ligne
      ligne = Sheets("Listing").Range("A" & Rows.Count).End(xlUp).Row + 1
      Set FL1 = Worksheets("Facture")
      Set FL2 = Worksheets("Listing")
      FL2.Cells(ligne, 1) = FL1.Cells(18, 5) 'N°facture
      FL2.Cells(ligne, 2) = FL1.Cells(9, 5) 'Destinataire
      FL2.Cells(ligne, 4) = FL1.Cells(13, 5) 'Localité
      FL2.Cells(ligne, 5) = FL1.Cells(39, 7) 'Montant
      FL2.Cells(ligne, 6) = FL1.Cells(39, 4) 'TVA
      End Sub
      


      Tu as changé le code que je t'avais posté, cela ne sert à rien de se décarcasser!

      Si tu avez lu le site que je t'ai proposé tu aurais appris que l'on ne met rien avant Option Explicit.

      Ensuite tu mets la feuille Listing alors qu'elle n'existe pas dans ton classeur, c'est la feuille Clients

      Tant que tu n'auras pas un peu potassé les bases de vba on ne pourras pas avancer!

      Voilà
      0
  7. daniel22 Messages postés 335 Date d'inscription   Statut Membre Dernière intervention   4
     
    Ok. Merci pour ta réponse.

    Désolé de t'avoir ennuyé.

    Bye
    0