Macro pour Copier/coller cellules et/ou lignes sur autre feuille

Résolu/Fermé
Georges76540 Messages postés 23 Date d'inscription dimanche 27 janvier 2013 Statut Membre Dernière intervention 16 mars 2018 - 27 janv. 2013 à 01:34
via55 Messages postés 14117 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 30 mars 2023 - 9 févr. 2015 à 22:49
Bonjour,

J'ai créé un dossier sous excel 2003 pour un ami qui souhaite gérer au plus juste la vente de ses produits à des associations locales afin d'octroyer à chacune d'entre elles une remise dont le taux variera selon le montant des commandes effectuées.
Le dossier comporte plusieurs feuilles pour les besoins de gestion soit :
1) Annuaire des associations (Nom, adresse, téléphone et Taux de remise accordée)
2) Une liste de données où figurent les produits mis en vente et leur prix unitaire
3) feuille d'enregistrement des commandes pour cette dite association qui comporte 19 colonnes qui sont :
> Produit en colonnes G M S Y
(sachant que chaque colonne concerne une catégorie différente de produits qui seront sélectionnés grâce à un ascenseur qui se réfère à la feuille 2 "LISTE". Une ou plusieurs lignes (cellule) pourront être nécessaires pour enregistrer certaine commande)
> Prix unitaire en colonnes I O U AA (ces colonnes font, aussi, référence à la feuille 2 "LISTE" avec syntaxe "INDEX et EQUIV") Prix unitaire selon article choisi.
> Quantité J P V AB Saisie manuelle
> Prix total des marchandises K Q W AC (simple cellule de calcul)
> Total de la commande AE (cellule de simple calcul....)
> Remise accordée AF (la remise est renseignée sur la feuille "annuaire" donc (INDEX et EQUIV) pour retrouver la remise de telle ou telle association
> Net à payer AG (simple cellule de calcul)
Voici comment se présente mon tableau et tout va pour le mieux, c'est tout simple, je ne suis pas très expert mais content de moi tout de même.
Par contre, où je rencontre un big problème c'est lorsque je souhaite automatiser (avec une macro) la confection d'une facture avec la et/ou les dernières lignes/cellules saisies. Le copier/coller est une solution mais dans un dossier où tout est pratiquement automatique, ça pêche !!!!
Si quelqu'un pouvait m'expliquer comment copier/coller ces cellules (la/les lignes concernées seraient marquées par un "X" en dernière cellule, comme point de repaire) sur une autre feuille à l'aide d'une macro, je me chargerai, ensuite, de l'établissement de la facture.
Beaucoup de baratin mais est ce que mon besoin à bien été décrit.??!!
Merci d'avance pour le coup de main que vous pourriez m'apporter.



4 réponses

via55 Messages postés 14117 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 30 mars 2023 2 580
27 janv. 2013 à 03:05
Bonjour,

Pas évident de saisir ton tableau mais peu importe j'ai compris le but

La 1ere chose est à faire est de creer un modele de facture

la macro exemple que j'ai préparé copie unmodele , demande un nom a l'utilisateur et copie les données de la feuille active reperées par un X dans la nouvelle feuille avant d'effacer les X et de se repositionner sur la facture créee

https://www.cjoint.com/?0ABc5yN0VOE

La macro ne fonctionne que sur 20 lignes et 2 colonnes copiées; c'est juste pour montrer le fonctionnement

A toi de l'adapter selon tes besoins en changeant les valeurs et en rajoutant des lignes

En espérant avoir répondu à ton attente
1
Georges76540 Messages postés 23 Date d'inscription dimanche 27 janvier 2013 Statut Membre Dernière intervention 16 mars 2018
Modifié par Georges76540 le 28/01/2013 à 01:51
Bonsoir via55
Un grand merci pour la macro que tu m'as transmis, exactement ce que je souhaitai. Mon énoncé pas très clair mais le problème bien compris. Bien entendu il a fallu l'adapter à mes tableaux et travailler sur 600 lignes !! Par contre je n'ai pas automatisé la création de la facture car si plusieurs lignes sont concernées dans le tableaux, certaines cellules peuvent être vides, je conserve la feuille "Modele 2" j'applique un filtre pour pour cacher les cellules vides et là la facture peut être remplie, lors de la validation de cette facture, la feuille "Modele 2" est supprimée.
Encore un grand merci
@+.
0
Salut via55 pourrais-tu rendre la solution que tu as donné à Georges disponible à nouveau svp, je suis dans la mêm situation. Merci Jenn
0
via55 Messages postés 14117 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 30 mars 2023 2 580 > Jenn
9 févr. 2015 à 22:49
Bonsoir Jenn

Hélas je ne retrouve pas cette macro vieille de 2 ans mais voici le principe pour transférer d'une feuille à l'autre les seules lignes marquées d'une croix, la feuille 1 a des valeurs en colonnes A, B, C et D; on met des x en colonne E aux lignes qu'on veut copier et on lance la macro qui recopie à la suite les lignes cochées sur la feuille2 à partir de la ligne indiquée dans la macro puis efface la colonne avec les x en Feuil1

macro à adapter (notamment en changeant les noms Feuil1 et Feuil2 si différents dans ton fichier)

Sub recopie()
Dim Ligne As Long
' desactive raffraischissement ecran
Application.ScreenUpdating = False
' n° de la ligne en Feuil 2 après  laquelle de laquelle recopier à la suite les données
lg = 5 ' ici la recopie commencera donc en ligne 6 - à adapter
' recherche 1ere ligne vide en colonne 1 de la Feuil1 (en fait la cellule remplie en partant du bas et on ajoute 1)
Ligne = Sheets("Feuil1").Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row + 1
' Boucle sur toutes les lignes de Feuil 1
For n = 1 To Ligne
' si x en colonne E on copie la ligne de A à D, on incrémente lg de 1 et on copie en Feuil2
If Sheets("Feuil1").Range("E" & n) = "x" Then - à adapter si x dans une autre colonne
Sheets("Feuil1").Select
 Range("A" & n & ":" & "D" & n).Select  A adapter si plus ou moins de colonnes à copier
Selection.Copy
lg = lg + 1
Sheets("Feuil2").Select
Range("A" & lg).Select ' A adapter si ne commence pas en colonne A
ActiveSheet.Paste
End If
Next n
'selection feuille 1 et effacement des x
Sheets("Feuil1").Select
Columns("E:E").Select' A adapter
Selection.Delete Shift:=xlToLeft

Application.ScreenUpdating = True
End Sub


Fais l'adaptation à ton fichier et si tu as des problèmes reviens me demander en postant d'abord un exemple de ton fichier sur cjoint.com et en indiquant ici le lien fourni

Cdlmnt

Via
0
Mike-31 Messages postés 18188 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 mars 2023 5 037
27 janv. 2013 à 08:46
Salut le fil,

Si j'ai bien tout compris, pas certain qu'une macro soit nécessaire faudrait voir la structure de ton fichier sans notes confidentielles que tu peux joindre avec ce lien

https://www.cjoint.com/

Que nous ne soyons pas obligé de prendre de notre temps pour en créer un

0
Mike-31 Messages postés 18188 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 mars 2023 5 037
27 janv. 2013 à 20:29
Re,

Serait il possible d'avoir des nouvelles ou doit on abandonner cette discussion.
0
Georges76540 Messages postés 23 Date d'inscription dimanche 27 janvier 2013 Statut Membre Dernière intervention 16 mars 2018
28 janv. 2013 à 01:59
Bonsoir Mike 31

Désolé pour le retard pour ma réponse, mais famille oblige (désolé....).
Merci d'avoir étudié mon dossier. J'aurai pu t'envoyer mon fichier mais ce matin j'ai eu une réponse de via55 avec un exemple de macro qui conviend parfaitement à mes attentes, bien entendu avec quelques modif par rapport à mon classeur.

Je te remercie pour ton intervention
@+
0