Vba - copier des données d'une autre feuille dans quitter la feuille active

Sofhy

XLDnaute Occasionnel
Bonjour à tous,

Je reviens vers vous car je suis encore bloquée dans mon fichier par mon manque de connaissance du Vba.

J'ai une feuille X (car ce n'est jamais la même, ça sera la feuille active dans laquelle on lance la macro) qui fait appel à une feuille "critères" qui est fixe.
Je copie des données de la feuille critères, que je colle / transpose dans ma feuille active. Sauf que dans le code, j'écris que je retourne dans la feuille X "nommée Feuil2" pour coller ces données et donc je fige ma macro sur la feuille n°2.

J'ai essayé un système intermédiaire avec une formule =criteres!C1, mais je ne peux pas tirer la formule vers la droite, ça ne fonctionne pas. J'ai aussi essayé avec la fonction decaler mais sans succès (à noter que cette dernière fonction, je ne suis pas encore très à l'aise, c'est peut être pour ça que je n'ai pas réussi, car ça me semblait pourtant bien approprié).

Voilà mon bout de code qui me pose problème :
Code:
'Extraire la liste unique des modèles unique sur la feuille critère
    Sheets("Criteres").Columns("B:B").AdvancedFilter Action:=xlFilterCopy, _
    CopyToRange:=Sheets("Criteres").Range("C1"), Unique:=True
'Transposer cette liste sur la feuille active
    Sheets("Criteres").Select
    Range("C1").Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Feuil2").Select [COLOR="Blue"][B]c'est ici que je dois nommer
la feuille sur laquelle je retourne alors qu'elle est variable[/B][/COLOR]
    Range("B28").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True

Je vous joins mon bout de fichier également.
Merci par avance,
Sofhy
 

Pièces jointes

  • Feuilles Variables.xls
    46 KB · Affichages: 273

Pierrot93

XLDnaute Barbatruc
Re : Vba - copier des données d'une autre feuille dans quitter la feuille active

Bonjour Sophy

essaye avec une variable, pour l'initialiser lorsque la feuille concernée est active :

Code:
Dim ws As Worksheet
Set ws = ActiveSheet

ensuite n'importe où dans ton code, pour y faire référence tu codes ainsi :

Code:
ws.Range("A1").Value = 123

bonne journée
@+
 
G

Guest

Guest
Re : Vba - copier des données d'une autre feuille dans quitter la feuille active

Bonjour Sophy,
Pierrot:)

Tout comme Pierrot ou sans sélection de la feuille critères:

Code:
    [COLOR=blue]With[/COLOR] Sheets([I]"Criteres"[/I])
        .Columns([I]"B:B"[/I]).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=.Range([I]"C1"[/I]), Unique:=[COLOR=blue]True[/COLOR]
        [COLOR=green]'Transposer les données dans la feuille active[/COLOR]
        [COLOR=blue]With[/COLOR] .Range(.Range([I]"C1"[/I]), .Range([I]"C1"[/I]).[COLOR=blue]End[/COLOR](xlDown))
            .Copy
            ActiveSheet.Range([I]"B28"[/I]).Resize(, .Rows.Count).PasteSpecial _
                Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=[COLOR=blue]False[/COLOR], Transpose:=[COLOR=blue]True[/COLOR]
        [COLOR=blue]End[/COLOR] [COLOR=blue]With[/COLOR]
    [COLOR=blue]End[/COLOR] [COLOR=blue]With[/COLOR]
    Application.CutCopyMode = [COLOR=blue]False[/COLOR]

Pour bien faire il faudrait vérifier le nombre de lignes retourné par le filtre pour qu'il ne dépasse pas le nombre de colonnes disponibles pour la transposition.

A+
 

Sofhy

XLDnaute Occasionnel
Re : Vba - copier des données d'une autre feuille dans quitter la feuille active

Bonjour Hasco, Bonjour Pierrot93,

Merci, ça fonctionne parfaitement.

@Hasco,
Dans l'absolu il serait effectivement bien de vérifier que le nombre de lignes retournées ne dépasse pas le nombre de colonnes, mais dans mon tableau, si j'atteins 20 couleurs ça sera déjà exceptionnel, c'est donc nickel.

Merci encore et bonne fin de journée,
Sophie
 

Discussions similaires

Statistiques des forums

Discussions
312 172
Messages
2 085 932
Membres
103 050
dernier inscrit
HAMZA BKA