Problème de Macro

Fermé
Signaler
Messages postés
290
Date d'inscription
vendredi 8 avril 2005
Statut
Membre
Dernière intervention
20 octobre 2021
-
Messages postés
290
Date d'inscription
vendredi 8 avril 2005
Statut
Membre
Dernière intervention
20 octobre 2021
-
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.

6 réponses

Messages postés
7615
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
5 décembre 2021
671
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

Messages postés
290
Date d'inscription
vendredi 8 avril 2005
Statut
Membre
Dernière intervention
20 octobre 2021
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..

Messages postés
7615
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
5 décembre 2021
671
voilà un exemple

https://www.cjoint.com/c/IAxj4FxxiQQ
Messages postés
290
Date d'inscription
vendredi 8 avril 2005
Statut
Membre
Dernière intervention
20 octobre 2021
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

Messages postés
7615
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
5 décembre 2021
671
Tu aurais expliqué tout cela au départ, on aurait perdu moins de temps!

changer la macro comme ceci:

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(1, 4) 'N° facture
       FL2.Cells(ligne, 2) = FL1.Cells(5, 2) 'Destinataire
       FL2.Cells(ligne, 3) = FL1.Cells(6, 2) 'Ville
        FL2.Cells(ligne, 4) = FL1.Cells(16, 4) 'Montant
          FL2.Cells(ligne, 5) = FL1.Cells(3, 4) 'Date facture
End Sub


Voilà c'est tout simple ;-)
Messages postés
290
Date d'inscription
vendredi 8 avril 2005
Statut
Membre
Dernière intervention
20 octobre 2021
4
Rebonjour LE Pivert,

Décidément, je ne suis pas doué…

Ne comprenant pas le pas à pas de la macro, je suis obligé de la recopier ( avec des modifs) et là…


' SAUVEGARDE Macro
'

'
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

Si tu as encore un peu de patience, je te joins mon fichier.

Désolé pour tout le temps passé....

https://www.cjoint.com/c/IAzm3F2wTO4
Messages postés
7615
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
5 décembre 2021
671
Voilà

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

@+ Le Pivert
Messages postés
290
Date d'inscription
vendredi 8 avril 2005
Statut
Membre
Dernière intervention
20 octobre 2021
4
Merci pour ta réponse, je vais essayer de comprendre…
Messages postés
7615
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
5 décembre 2021
671
Voici une bonne lecture pour aller plus loin en VBA

https://silkyroad.developpez.com/VBA/DebuterMacros/
Messages postés
290
Date d'inscription
vendredi 8 avril 2005
Statut
Membre
Dernière intervention
20 octobre 2021
4
Erreur de compilation.
Instruction incorrecte dans une procédure.
....
Messages postés
7615
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
5 décembre 2021
671
Sans plus de précision, impossible de te répondre.
Expose le problème que tu rencontres, en expliquant ce que tu veux obtenir.

.....
Messages postés
290
Date d'inscription
vendredi 8 avril 2005
Statut
Membre
Dernière intervention
20 octobre 2021
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

Messages postés
7615
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
5 décembre 2021
671
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à
Messages postés
290
Date d'inscription
vendredi 8 avril 2005
Statut
Membre
Dernière intervention
20 octobre 2021
4
Ok. Merci pour ta réponse.

Désolé de t'avoir ennuyé.

Bye