IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Copier/Coller plage de cellules non-vides vers un autre classeur [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Invité
    Invité(e)
    Par défaut Copier/Coller plage de cellules non-vides vers un autre classeur
    Bonjour à tous,

    La question est dans l'intitulé.

    J'ai un classeur 1 dont je veux sélectionner les cellules non vide d'une plage allant de la colonne J à la colonne P depuis la ligne 4 ,jusqu'à la dernière ligne non vide (plage variable) .

    Copier et coller les valeurs dans un autre classeur 2 au même endroit

    Merci d'avance, je séche

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    S'il s'agit d'exporter des lignes entières de la liste de données, je ne peux que conseiller l'utilisation du filtre avancé dont les possibilités pour construire les critères sont sans limite. Il faut utiliser dans ce cas présent, le critère calculé.
    Après avoir défini les zones des données, de critères et d'exportation, la procédure en VBA pour effectuer cette exportation tient en une ligne de code. (voir ma réponse de ce matin dans cette discussion Trouver une date (mois et année) dans une colonne avec plusieurs dates

    A lire éventuellement Les filtres avancés ou élaborés dans Excel

    Quelques exemples de formule pour critère calculé sur une plage de données A1:K101
    Pour exporter la ligne si elle est complètement remplie
    Pour exporter les lignes qui contiennent au moins une cellule remplie

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour et merci d'avoir pris en compte ma question.

    Je ne pense pas que cela convienne, les cellules filtrées ne vont se remettre au même emplacement dans mon classeur de réception.

    Cependant, c'est une fonction que je n'avais pas encore utilisée, et c'est bon à prendre.

    J'étais plus parti sur un script VBA. Mais je vais bien trouver...

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'étais plus parti sur un script VBA. Mais je vais bien trouver...
    Si tu as lu ma réponse dans le lien que j'ai publié dans mon fil précédent, il s'agit bien de procédure VBA utilisant la méthode AdvancedFilter de l'objet Range

    Je ne pense pas que cela convienne, les cellules filtrées ne vont se remettre au même emplacement dans mon classeur de réception.
    On peut exporter une partie des colonnes et dans un ordre différent. Cependant si les colonnes cibles ne sont pas contiguë, rien n'empêche d'exporter plusieurs fois une colonne. Le script est tellement court et rapide qu'il est plus intéressant de procéder ainsi.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Re,

    OK, je vais me tourner sur cette méthode avec des essais.

    Encore merci

  6. #6
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 125
    Points : 9 953
    Points
    9 953
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    si j'ai bien compris, tu veux :

    - pour chaque ligne de ta BDD (le début étant à la ligne4) : prendre les cellules non vides des colonnes J à P
    - copier ces cellules dans un autre classeur, mais à la même position que le classeur source (même ligne et même colonne)

    par exemple :

    Si J4 est rempli, je colle sa valeur en J4 du classeur de destination ?

    je ne trouve pas d'idée avec un filtre avancée, je propose donc une solution par Tableau Virtuel pour ne pas travailler sur les cellules, et ainsi gagner du temps

    je pars du principe que les cellules de la colonne A sont toujours remplis (sinon il faudra adapter... dis nous)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Sub RecopieNonVide()
    Dim Tablo
     
    ' adapter la feuille source
    With ThisWorkbook.Worksheets("LaFeuilleSource")
                                           ' adapter la colonne "1" si elle n'est pas toujours remplie
        Tablo = .Range(.Cells(4, 10), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 16))
    End With
     
    ' adapter la feuille de destination
    With Workbooks("L'autre Classeur").Worksheets("LaFeuilleDeDestination")
        For i = LBound(Tablo, 1) To UBound(Tablo, 1)
            For j = LBound(Tablo, 2) To UBound(Tablo, 2)
                If Tablo(i, j) <> "" Then .Cells(3 + i, 9 + j) = Tablo(i, j)
            Next j
        Next i
    End With
     
    End Sub

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour Joe,

    C'est exactement ce que je voulais. Et la colonne "A" est toujours pleine.

    Je n'ai pas essayé, car je ne suis pas à bord du PC qui a le programme, mais je ne manquerai pas de redonner des nouvelles

    Merci en attendant

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonsoir à tous,

    Je viens de faire un essai avec mes deux classeurs : "NICKEL-CHROME".

    Deux p'tites routines pour l'ouverture de mon classeur récepteur avant le lancement du script, son enregistrement et sa fermeture et le tour est joué.

    Merci Joe.

  9. #9
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Citation Envoyé par joe.levrai Voir le message
    je ne trouve pas d'idée avec un filtre avancée
    Hey joe, c'est quand que tu t'y mets ?‼

  10. #10
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 125
    Points : 9 953
    Points
    9 953
    Billets dans le blog
    5
    Par défaut
    Rhoooooo je sens la vengeance me retomber sur le coin de la cafetière, c'est de bonne guerre et ça fait plaisir

    je m'y suis mis figure toi ! j'ai retiré mes moufles et enfin compris pourquoi ça partait en sucette à chaque fois ... heureux de maintenant intégrer complètement cet outil dans mes applications déjà en place.

    Tiens, ma contre-vengeance :

    - solution clé en main : http://www.developpez.net/forums/d15...e/#post8277169

    - et j'ai même pris la confiance et doublé Philippe ici (on appelle ça "la chance du débutant") : http://www.developpez.net/forums/d15...ore-different/

  11. #11
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut




    Bien ! le filtre avancé rend de grands services en VBA avec un code compact, rapide et aisé à maintenir
    et donc bien plus facile à appréhender pour un demandeur débutant …


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Copier coller plage de cellules dans une boucle For Each..Next
    Par JulieD33 dans le forum Excel
    Réponses: 3
    Dernier message: 02/03/2015, 11h19
  2. [XL-2013] Copier uniquement des cellules non vides sur un autre classeur
    Par tonyfrost dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/06/2014, 22h54
  3. [XL-2007] Copier coller plage de cellule VBA en decalant d'une colonne si remplie
    Par thibault12500 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/11/2013, 11h53
  4. Réponses: 0
    Dernier message: 28/11/2011, 23h41
  5. [XL-2003] Copier coller en fonction de non vide d'une colonne adjacente
    Par Vadorblanc dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/03/2011, 20h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo