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 :

Copie de colonnes non consécutives vers la première ligne vide d'un autre fichier [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2015
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2015
    Messages : 78
    Par défaut Copie de colonnes non consécutives vers la première ligne vide d'un autre fichier
    Bonjour,

    Après plusieurs recherches sur le forum, j'ai fait cette macro:
    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
    Sub import()
    Dim classeurSource As Workbook, classeurDestination As Workbook
    Dim lignecible As Long
    Dim colsource
     
     
    Set classeurSource = Application.Workbooks.Open("U:\Eléments linéaires de structure (poutres 15x15, longrines ...)\Classeur1.xlsx", , True)
    Set classeurDestination = ThisWorkbook
    Set colsource = classeurSource.Sheets("Feuille 1").Range(Columns(1), Columns(8), Columns(9), Columns(10))
     
    lignecible = Range("A" & Rows.Count).End(xlUp).Row + 1
    classeurDestination.Sheets("Feuil1").Range("A" & lignecible) = colsource.Value
     
    classeurSource.Close False
     
    End Sub
    Mais elle ne fonctionne pas.

    Ce que j'aimerais, c'est copier les colonnes A, H, I, J du classeur1, de la cellule 7 à la dernière non vide(j'ai pas encore fait des recherches pour ça) et sans la mise en forme, à la suite d'un autre classeur (première cellule vide de la colonne A).

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Tu ne peux pas copier une colonne complète et la coller ailleurs qu'en ligne 1.
    Il te faudrait déterminer le nombre de lignes à copier et sélectionner les plages nécessaires.

    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Range("A1:A12,C1:C12,E1:E12").Copy
        Range("A13").PasteSpecial Paste:=xlPasteValues
    Dans ce cas-ci, les plages non contigües (A, C et E) seront copiées, mais collées une à côté de l'autre (A à C).
    Je ne sais pas si c'est ce que tu veux comme résultat, par contre

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2015
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2015
    Messages : 78
    Par défaut
    J'ai essayé mais je bloque toujours à la ligne des ranges:
    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
    Sub import()
    Dim classeurSource As Workbook, classeurDestination As Workbook
    Dim lignecible As Long
    
    
    Set classeurSource = Application.Workbooks.Open("U:\Eléments linéaires de structure (poutres 15x15, longrines ...)\Classeur1.xlsx", , True)
    
    classeurSource.Sheets("Feuille 1").Range("A7:A100,H7:H100,I7:I100,J7:J100").Copy
    
    Set classeurDestination = ThisWorkbook
    
    lignecible = Range("A" & Rows.Count).End(xlUp).Row + 1
    classeurDestination.Sheets("Feuil1").Range("A" & lignecible).PasteSpecial Paste:=xlPasteValues
    
    classeurSource.Close False
    
    End Sub

  4. #4
    Expert éminent
    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
    Par défaut

    Bonjour,

    la règle de base est le respect de la hiérarchie objet d'Excel …

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Demo()
        Application.ScreenUpdating = False
                                L& = Feuil1.Cells(Rows.Count, 1).End(xlUp).Row + 1
        Workbooks.Open "U:\Eléments linéaires de structure (poutres 15x15, longrines ...)\Classeur1.xlsx", , True
     
        With ActiveWorkbook.Worksheets("Feuille 1")
                                               R& = .Cells(.Rows.Count, 1).End(xlUp).Row - 6
               Feuil1.Cells(L, 1).Resize(R).Value = .[A7].Resize(R).Value
            Feuil1.Cells(L, 2).Resize(R, 3).Value = .[H7].Resize(R, 3).Value
            .Parent.Close False
        End With
    End Sub
    _____________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

    _____________________________________________________________________________________________________
    Je suis Charlie - Je suis Bardo

  5. #5
    Membre confirmé
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2015
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2015
    Messages : 78
    Par défaut
    J'ai trouvé pourquoi la ligne copy bloquait.
    A la fin du classeur1 (fichier exporté depuis un logiciel donc non modifiable), Il y a du texte
    Nom : CaEtt5U.png
Affichages : 558
Taille : 8,3 Ko

    Quand je supprime les lignes (que le texte ne suffit pas), je n'ai plus l'erreur.
    Il y a-t-il un moyen de contourner ça alors qu'on ne peut pas modifier le classeur1?

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Si tu copies seulement la partie du haut avec les données, est-ce que ça fonctionne ?
    Si oui, tu pourrais juste changer la méthode pour trouver le nombre de lignes à copier.
    Autrement, je ne vois pas pourquoi ces 2 lignes t'empêcheraient de copier les données..(?)

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

Discussions similaires

  1. [XL-2003] copier plusieurs colonnes non consécutive avec .Columns()
    Par hantran dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 11/06/2018, 12h42
  2. [XL-2013] Copier colonnes non consécutives et les collées avec un écart de colonnes voulu
    Par namora dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/04/2015, 19h10
  3. [XL-2003] Taille de colonnes et première ligne vide.
    Par rsuinux dans le forum Excel
    Réponses: 3
    Dernier message: 17/09/2014, 15h27
  4. [XL-2007] récapitulatif avec colonnes non consécutives
    Par stephadm dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/05/2012, 07h38
  5. [XL-2007] copier/coller des cellules vers une première ligne vide
    Par aminee1666 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/06/2011, 23h35

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