VBA copier/collier d'apres liste deroulante

Bonjour,

je cherche a construire une macro qui :

- copie/colle valeur une feuille entiere

- pour chaque valeur presente dans une liste deroulante

- dans un nouveau fichier ou le nom de la feuille serait egale a la valeur selectionnée dans la liste deroulante

Si vous avez une idée de la maniere dont ca peut s'ecrire (je suis entirement debutant en VBA)...

Merci de votre aide

Bonsoir

C'est dans le même fichier que vous voulez creer les valeurs du tableau en fonction du choix des listes déroulantes ou dans un fichier séparé ?

Si c'est dans un fichier séparé, il faudra savoir où vous voulez le sauvegarder

Si c'est dans le fichier que vous avez posté, c'est le plus simple à faire

Cordialement

Dan,

je suis desolé de mon retour aussi tardif.

Je voudrais les copier/coller dans un fichier separé.Pour le chemin d'acces, je le modifierai dans la macro si vous en avez une à me proposer

Merci de votre aide

Bonjour

Voici un code à placer dans un module de votre fichier et associer à un bouton placé sur chaque feuille à sauvegarder

Sub Macro1()
'Dan - 16/03/2020
Dim chemin As String, nomfichier As String
chemin = ThisWorkbook.Path & "\"
nomfichier = ActiveSheet.Name
With ActiveSheet
    .Cells.Copy
    .Cells.PasteSpecial Paste:=xlPasteValues
    .Copy
End With
With Application
    .DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:=chemin & nomfichier
    .DisplayAlerts = True
    .CutCopyMode = False
End With
End Sub

La feuille sera sauvegardée dans un nouveau fichier qui sera placé là où se trouve votre fichier contenant toutes les feuilles. Ce nouveau fichier sera renommé avec le nom de la feuille.

Cordialement

Merdi Dan pour ta proposition mais malheureusement ma demande est plus complexe

Je mets en PJ un exemple

Macro souhaitée

1/ Copier/coller valeur du tableau dans un nouveau fichier "suivi mag"

2/ Nommer la feuille du nouveau fichier "suivi mag" du nom de la cellule A3 qui est une liste deroulante (exemple PVT 5)

3/ Renouveller la meme operation : copier/coller le tableau MAIS pour une autre valeur de la liste deroulante en A3 (exemple PVT 4)

4/ Créer une nouvelle feuille (dans le meme fichier "suivi mag") du nom de la nouvelle valeur de la liste deroulante (exemple PVT 4)

Au final je voudrais avoir un fichier avec tous les tableaux des magasins (présents dans la liste deroulante) sur une feuille distincte.

Ceci me permettrait de le transformer en format pdf et de l'envoyer a des personnes qui n'ont pas excel.

Merci de votre aide

Bonjour

Hum c'est différent là. faut tout recommencer

1/ Copier/coller valeur du tableau dans un nouveau fichier "suivi mag"

Le fichier est créé ou c'est le code qui doit le faire ?

Au final je voudrais avoir un fichier avec tous les tableaux des magasins (présents dans la liste deroulante) sur une feuille distincte. Ceci me permettrait de le transformer en format pdf et de l'envoyer a des personnes qui n'ont pas excel.

Au fait peut être est-ce une bête question, mais pourquoi vous ne faites pas cela dans le fichier plutôt que de créer un fichier suivi Mag avec toutes les feuilles ?

Crdlt

Si la difficulté c'est de creer un NOUVEAU fichier, alors pas de probleme pour que les nouvelles feuilles soient crees dans le meme fichier.

Re

Bien que ce serait plus long d'un point de vue code, ce n'est pas une difficulté à proprement parler mais cela me parait plus simple de travailler dans le même fichier sachant qu'il s'agit de faire un copier coller d'un tableau dans une feuille et puis de créer un PDF à envoyer.

Dans le cas où vous restez sur le même fichier, le code ci dessous vous donnera ce que vous voulez faire.

Sub Ajout()
Dim feuille As String
Dim i As Byte
Dim j As Boolean

For i = 1 To Sheets.Count
    If Sheets(i).Name = Sheets("Synthese").Range("A2").Value Then j = 1: Exit For
Next i
Select Case j
    Case Is = 0:
        Sheets("Synthese").Copy after:=Sheets(Sheets.Count)
        ActiveSheet.Name = ActiveSheet.Range("A2")
    Case Is = 1
        feuille = Sheets("Synthese").Range("A2").Value
        With Sheets(feuille)
            .Cells.Delete
            Sheets("Synthese").Range("A2").CurrentRegion.Copy
            .Range("A2").PasteSpecial Paste:=xlPasteValues
            .Range("A2").PasteSpecial Paste:=xlPasteFormats
        End With
End Select
Application.CutCopyMode = False
End Sub
  • Placez le code dans un module (ALT + F11)
  • Créez un bouton sur votre feuille Synthèse et affectez le au code (clique droite sur le bouton et choisir "affecter....)

On pourrait aussi exécuter le code automatiquement en fonction du choix de la liste déroulante mais à voir si c'est une solution que vous souhaitez car dans ce cas à chaque choix dans la liste le code sera exécuté.

Cordialement

Merci beaucoup.

Je regarde ca

Dan,

la macro, copie uniquement le tableau pour la valeur presente a A3 et non pour toutes les valeurs presentes dans la liste deroulante (voir PJ)

Les donnees de la liste deroulante sont presentes dans base de donnees en G4. De facon a enchainer, toutes les copies de tableau, ne faudrait il pas utiliser cette liste ?

Re

Avant de poster j'ai testé le code et je ne vois pas votre souci et la totalité du tableau est copiée sur base du choix dans votre liste déroulante.

Par contre dans votre fichier exemple posté précédemment votre liste déroulante est en A2. Dans votre dernier fichier elle est en A3. Donc le changement dans votre liste déroulante ne va créer qu'une feuille nommée "Filtre ci-dessous". Remettez la liste déroulante du tableau en A2 ou alors il faut changer les A2 en A3 dans tout le code.

De facon a enchainer, toutes les copies de tableau, ne faudrait il pas utiliser cette liste

Si vous voulez créer toutes mes feuilles d'une seule fois c'est différent et il faut changer le code. Mais cela me paraissait intéressant que vous puissiez choisir en fonction du choix dans votre liste

Merci de préciser

Crdlt

Un grand merci pour votre patience et desolé pour le decalage de cellule.

Je souhaite creer toutes les feuilles en une seule fois.

Le but final est le suivant :Une fois le fichier creé avec toutes les feuilles, je pourrai le transformer en pdf et l'expedier par mail a des personnes qui n'ont pas excel

Encore merci pour votre implication

Bonjour

Mettez ce code dans le module

Sub creer()
'Dan - 19/3/20
Dim k As Byte

With Sheets("BDD")
    For k = 4 To .Range("G" & .Rows.Count).End(xlUp).Row
        Sheets("Synthese").Range("A2") = .Range("G" & k)
        Call Ajout
    Next k
End With
End Sub

Ensuite vous mettez un bouton (via le menu Insertion -> Illustration -> Forme) sur votre feuille BDD (par exemple au dessus de la liste en colonne G. Ensuite vous affectez ce bouton à la macro Creer ci-dessus

Votre liste PVT doit se trouver à partir de la ligne 4. Vous pouvez ajouter des PVT en supplément si vous le voulez.

Cordialement

Dan,

Je sens la ligne d'arrivée proche mais malheureusement j'ai encore trébuché.

La macro s'arrete a "Call Ajout" et affiche "Erreur de compilation Sub ou fonction non definie"

J'ai cherché la signification sur internet du message mais je n'arrive pas à comprendre ou ca bug.

- J'ai fait Alt F11

- Ajouter un module

- Copier/coller la derniere macro (elle annule et remplace la precedente ?)

- Lorsque je la lance en pas a pas , elle coince a call ajout

  • J'ai essayé de mettre la 2eme macro a la suite de la 1ere dans un meme module mais sans resultat non plus.Les macros ne s'enchainent pas.
  • J'ai essayé dans 2 modules differents, sans succes non plus.

Call ajout signifie faire reference a la 1ere macro ?

Dan

j'ai compris tes macros et ...ca marche

J' ai mis les macros dans 2 modules differents

Creer 2 boutons associes aux 2 macros

Je clique sur les boutons successivement

Encore merci

Re

Je ne vois où est le souci. Vous avez dû faire une mauvaise manip

Si cela bugguait sur call ajout c est que votre macro ajout n'était pas dans le fichier.

Voyez le fichier joint. Le bouton est au dessus dans la feuille BDD

Cordialement

Dan,

un grand merci pour ta patience.

Ca marche tres bien

Encore merci

Dan,

Une derniere question je vous promets.

Pour coller la feuille en coller valeur, auriez vous la fonction ?

J ai vu que c est paste special mais je ne sais pas ou mettre cette fonction dans votre macro

Rechercher des sujets similaires à "vba copier collier liste deroulante"