[Catégorie modifiée .Net --> VBA] Copie Cellules

[Résolu]
Signaler
Messages postés
50
Date d'inscription
vendredi 15 août 2008
Statut
Membre
Dernière intervention
29 novembre 2010
-
Messages postés
50
Date d'inscription
vendredi 15 août 2008
Statut
Membre
Dernière intervention
29 novembre 2010
-
Bonjour à tous,
je souhaite faire une copie automatique d'une feuille à l'autre mais en ne sélectionnant uniquement que les lignes remplies.
Concrètement je veux sélectionner la colonne A à N à partir de la ligne 6 (sans pour autant copier 10 000 lignes)
Voici mon code :

Sub Test()
Sheets("ListeMDC").Select
Selection.AutoFilter Field:=14, Criteria1:="<>"
Dim plage As Range
Dim cel As Range
Set plage = Range("A6:A" & Range("B65536").End(xlUp).Row)
plage.Select
Selection.Copy
Sheets("CLOS").Select
Range("A6").Select
ActiveSheet.Paste

'Annuler le surlignage des cellules :
Selection.Interior.ColorIndex = xlNone
Range("A6").Select
ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
Sheets("ListeMDC").Select
Selection.AutoFilter Field:=11
Selection.AutoFilter Field:=14

Je bloque à set plage = Range

Est-ce que quelqu'un peut m'aider svp ?

Merci d'avance,
Thibault

10 réponses

Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
???

Désolé, je l'ai testé sur ton fichier... Comment tu t'y prends donc ?...

Amicalement,
Us.
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
Bonjour,

Ce que tu décris n'est pas très clair.

J'ai testé ceci :

Sub Test()
Dim plage As Range
Set plage = Range("A6:A" & Range("B65536").End(xlUp).Row)
plage.Select
End Sub


qui fonctionne normalement...

Ensuite, je ne comprend pas ce que tu veux faire vraiment ?

Tu dis :
je souhaite faire une copie automatique d'une feuille à l'autre mais en ne sélectionnant uniquement que les lignes remplies.
Concrètement je veux sélectionner la colonne A à N à partir de la ligne 6 (sans pour autant copier 10 000 lignes)


- Doit-on comprendre que ton tableau présente des lignes entièrement vides entre les colonnes A à N? Pourquoi il n'y a rien dans ton code qui fait la recopie sur une autre feuille?
- "sans pour autant copier 10 000 lignes"? Veux-tu dire que la dernière ligne peut se situer à la 10000ième ligne?

- Pourquoi 'Annuler le surlignage des cellules'? ou les AutoFilter ?

Amicalement,
Us.
Messages postés
50
Date d'inscription
vendredi 15 août 2008
Statut
Membre
Dernière intervention
29 novembre 2010

Merci pour ta réponse.
Je précise donc :
actuellement il y a 300 lignes de complétées (colonnes A à N remplies)
Ma méthode pour copier ce qui m'intéresse était dans un premier temps de faire une sélection de A6 à N 10000 c'est à dire de sélectionner les 10000 lignes de la colonne A à N. J'ai ceci pour être sur que les ajouts récents soient pris en compte.
Ma 2ème méthode a été d'essayer de ne sélectionner que les lignes complétées avec le code ci dessus. Ce code ne copie que la colonne A. Je souhaiterai faire de même pour les autres colonnes mais je n'y arrive pas. Je n'arrive pas à "additionner plusieurs range de la même feuille".

Pourquoi les autofilter ?
tout simplement parce qu'au départ j'ai placé des filtres sur les colonnes A à N. Si je n'annule pas les autofilter dans ma macro lorsque je consulterai la feuille alors ce filtre sera sélectionné.

Pourquoi les couleurs ?
Parce que dès qu'une ligne est entiérement complétée alors elle se colore en jaune. Mais de toute façon je vais arrêter ce système.

Je met un exemple en lien ça aidera à mieux comprendre (ne fait pas attention aux macro j'ai fait différents essais)
http://tsauron.free.fr/Envoiforum.xls
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
Bonjour,

Essayes ceci :

Sub Recopie()

    ' Paramètres
    Dim Nb As Long
    
    ' Nombre d'élément dans ListeMDC
    Nb = Worksheets("ListeMDC").Range("A65536").End(xlUp).Row
    
    ' Recopie de ListeMDC vers CLOS
    Worksheets("ListeMDC").Range("A5:N" & CStr(Nb)).Copy 'selection plage
    Worksheets("CLOS").Range("A6").PasteSpecial
    Worksheets("CLOS").UsedRange.Interior.ColorIndex = xlNone

End Sub


J'ai regardé votre fichier... Bon, il y a plein de chose qui ne vont pas vraiment... Les "ActiveWindow.SmallScroll Down:=-12" répète le mouvement qu'on fait avec la souris avec la roulette... pourrait être retirés...

Amicalement,
US.
Messages postés
50
Date d'inscription
vendredi 15 août 2008
Statut
Membre
Dernière intervention
29 novembre 2010

Désolé ça ne fonctionne pas, ça me recopie la feuille entière y compris les titres.
Messages postés
50
Date d'inscription
vendredi 15 août 2008
Statut
Membre
Dernière intervention
29 novembre 2010

Je met le code dans un module et j'active ma macro à l'aide d'un bouton.
chez moi ça m'enlève les couleurs des titres (ligne 5)
et ça me recopie l'intégralité de la feuille MDC à partir de la ligne 6.
Messages postés
50
Date d'inscription
vendredi 15 août 2008
Statut
Membre
Dernière intervention
29 novembre 2010

J'ai réussi. Voici mon code :
Sheets("ListeMDC").Select       
    Selection.AutoFilter Field:=14, Criteria1:="<>"
             
    Range("A6:N" & Range("A65536").End(xlUp).Row).Select
    Selection.Copy
    Sheets("MDCcloses").Select
    Range("A6").Select
    ActiveSheet.Paste
        'Formule pour enlever le surligne des cellules au cas où :
            'Annuler le surlignage des cellules pour les MDC closes :
            'Selection.Interior.ColorIndex = xlNone
            
    Selection.AutoFilter Field:=14 'permet d'enlever le filtre sur la liste MDC


Merci beaucoup pour ton aide. Je vais quand même essayer de poursuivre avec ton code ça m'a l'air plus simple pour la suite.

Gros Quick
Messages postés
50
Date d'inscription
vendredi 15 août 2008
Statut
Membre
Dernière intervention
29 novembre 2010

Mince j'ai oublié un truc, il faut rajouter
Sheets("ListeMDC").Select avant la dernière ligne
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
Okay, je vois. Il faut toujours adapté un peu un code...

L'histoire de la ligne 5 : c'est parce que la ligne est :
Worksheets("ListeMDC").Range("A5:N" & CStr(Nb)).Copy 'selection plage

Mettre A6 au lieu de A5. Mais dans ton fichier, la ligne 5 correspond au début des données... Bon, une simple adaptation.

La suppression du fond en couleur est fait avec :
Worksheets("CLOS").UsedRange.Interior.ColorIndex = xlNone


J'utilise UsedRange, c'est à dire tout l'espace utilisé dans la feuille... C'est parce que dans ton fichier, tu n'as pas la feuille CLOS... Il faut la créer. Donc j'ai pensé que tu avais peut-être un code (non fourni) qui l'ajoute, puis à la fin en rajoute les titres. Il semble que ce n'est pas le cas donc.
Sinon, l'alternative, c'est de faire le type de code que précédemment ce qui donne :

nb = Worksheets("CLOS").Range("A65536").End(xlUp).Row
Worksheets("CLOS").Range("A6:N" & CStr(nb)).Interior.ColorIndex = xlNone


A la place de :
Worksheets("CLOS").UsedRange.Interior.ColorIndex = xlNone

Amicalement,
Us.
Messages postés
50
Date d'inscription
vendredi 15 août 2008
Statut
Membre
Dernière intervention
29 novembre 2010

Merci US. Désolé pour mes erreurs je débute et je ne saisie pas encore tout. Je vais utiliser ton code ça me servira pour la suite.

A+
Gros Quick