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

grosquick59 50 Messages postés vendredi 15 août 2008Date d'inscription 29 novembre 2010 Dernière intervention - 26 juin 2010 à 20:03 - Dernière réponse : grosquick59 50 Messages postés vendredi 15 août 2008Date d'inscription 29 novembre 2010 Dernière intervention
- 28 juin 2010 à 18:08
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
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
us_30 2117 Messages postés lundi 11 avril 2005Date d'inscription 14 mars 2016 Dernière intervention - 28 juin 2010 à 13:21
3
Merci
???

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

Amicalement,
Us.

Merci us_30 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de us_30
us_30 2117 Messages postés lundi 11 avril 2005Date d'inscription 14 mars 2016 Dernière intervention - 27 juin 2010 à 14:36
0
Merci
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.
Commenter la réponse de us_30
grosquick59 50 Messages postés vendredi 15 août 2008Date d'inscription 29 novembre 2010 Dernière intervention - 27 juin 2010 à 20:23
0
Merci
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
Commenter la réponse de grosquick59
us_30 2117 Messages postés lundi 11 avril 2005Date d'inscription 14 mars 2016 Dernière intervention - 28 juin 2010 à 12:12
0
Merci
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.
Commenter la réponse de us_30
grosquick59 50 Messages postés vendredi 15 août 2008Date d'inscription 29 novembre 2010 Dernière intervention - 28 juin 2010 à 13:16
0
Merci
Désolé ça ne fonctionne pas, ça me recopie la feuille entière y compris les titres.
Commenter la réponse de grosquick59
grosquick59 50 Messages postés vendredi 15 août 2008Date d'inscription 29 novembre 2010 Dernière intervention - 28 juin 2010 à 14:56
0
Merci
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.
Commenter la réponse de grosquick59
grosquick59 50 Messages postés vendredi 15 août 2008Date d'inscription 29 novembre 2010 Dernière intervention - 28 juin 2010 à 15:24
0
Merci
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
Commenter la réponse de grosquick59
grosquick59 50 Messages postés vendredi 15 août 2008Date d'inscription 29 novembre 2010 Dernière intervention - 28 juin 2010 à 15:32
0
Merci
Mince j'ai oublié un truc, il faut rajouter
Sheets("ListeMDC").Select avant la dernière ligne
Commenter la réponse de grosquick59
us_30 2117 Messages postés lundi 11 avril 2005Date d'inscription 14 mars 2016 Dernière intervention - 28 juin 2010 à 16:33
0
Merci
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.
Commenter la réponse de us_30
grosquick59 50 Messages postés vendredi 15 août 2008Date d'inscription 29 novembre 2010 Dernière intervention - 28 juin 2010 à 18:08
0
Merci
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
Commenter la réponse de grosquick59

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.