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 une colonne pb avec range cells


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Points : 7
    Points
    7
    Par défaut copier une colonne pb avec range cells
    Bonjour,
    j'ai ce code pour copier des colonnes de différents fichiers sorties sur une meme feuille, mais il y a une erreur (erreur définie par l'application ou l'objet) au niveau de range (cells...)
    Que faudrait il que je change? merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim i, j As Integer
    For i = 1 To 5
    j = i + 1
    Workbooks.Open "C:\A" & i & ".csv"
    Workbooks("A" & i & ".csv").Sheets("A" & i).Range("AS2:AS366").Copy (Workbooks("RESULTAT.xls").Sheets("Resultat").Range(Cells(3, j), Cells(367, j)))
    Workbooks("A" & i & ".csv").Close
    Next i

  2. #2
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 155
    Points : 77
    Points
    77
    Par défaut
    Hello,

    récemment, j'ai eu à faire quelque chose de semblable à ce que tu dois chercher à faire.

    Et j'ai fait comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Set A = Worksheets("*.csv")
    Set B = Worksheets("*.csv")
     
     
    A.Range(A.Range("B1:G1"), A.Range("B1:G1").End(xlDown)).Copy B.Range("C2")
    En adaptant, je pense que tu devrais t'en sortir

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    En fait mon probleme vient du fait que je voudrais que a chaque fois ca decale la copie d'une colonne. c'est ce que j'essaie de faire avec cells mais qui ne marche pas. Si a la place je mets une plage fixe, par ex "B3" la ca marche.

  4. #4
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 155
    Points : 77
    Points
    77
    Par défaut
    Tu veux décaler pour coller une fois dans la colonne A, la fois d'après dans la colonne B, etc etc ?

    Il te faut donc incrémenter sur le nom de la colonne. Pour se faire, passe par le code ASCII pour indiquer ta colonne.
    De mémoire, utilise la fonction Ctr.
    Par exemple, la colonne "A1" devient Ctr(66) & 1
    donc pour B1: Ctr(66+I) & 1

    Creuse de ce côté là

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Un conseil ? Ne te lance pas à utiliser Chr (non ctr) pour nommer tes colonnes
    Il y a suffisemment de méthodes pour ne pas ajouter de complexité au code
    Que veux-tu faire ? Copier certaines colonnes de feuilles de calculs différentes dans une feuille unique, en ajoutant les colonnes les unes à la suite des autres...
    Est-ce bien ça ?
    A+

    Désolé discus, mais autant utiliser les outils qui existent

  6. #6
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    plus amusant pour avoir la lettre et qui a l'avantage de fonction au dela de 2 colonne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    dim lettre as string
    dim i as byte
    i=28 'le numero de colonne
    lettre=Split(Cells(1, i).Address, "$")(1)
    msgbox lettre
    'et ensuite 
    range(lettre & 1)
    Mais pour copier une colonne on fait plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Columns(1).Copy Columns(2)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim i, j As Integer
    For i = 1 To 5
    j = i + 1
    Workbooks.Open "C:\A" & i & ".csv"
    Workbooks("A" & i & ".csv").Sheets("A" & i).columns(1).Copy  Workbooks("RESULTAT.xls").Sheets("Resultat").columns(j)
    Workbooks("A" & i & ".csv").Close
    Next i
    Edit : la première méthode pour avoir la lettre est amusante mais compliqué passer par le numéro de colonne est bien plus simple

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    Un conseil ? Ne te lance pas à utiliser Chr (non ctr) pour nommer tes colonnes
    Il y a suffisemment de méthodes pour ne pas ajouter de complexité au code
    Que veux-tu faire ? Copier certaines colonnes de feuilles de calculs différentes dans une feuille unique, en ajoutant les colonnes les unes à la suite des autres...
    Est-ce bien ça ?
    A+

    Désolé discus, mais autant utiliser les outils qui existent
    oui c'est ca je veux copier des colonnes de différents fichiers a la suite dans un seul fichier

    Citation Envoyé par Krovax Voir le message
    plus amusant pour avoir la lettre et qui a l'avantage de fonction au dela de 2 colonne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    dim lettre as string
    dim i as byte
    i=28 'le numero de colonne
    lettre=Split(Cells(1, i).Address, "$")(1)
    msgbox lettre
    'et ensuite 
    range(lettre & 1)
    Mais pour copier une colonne on fait plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Columns(1).Copy Columns(2)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim i, j As Integer
    For i = 1 To 5
    j = i + 1
    Workbooks.Open "C:\A" & i & ".csv"
    Workbooks("A" & i & ".csv").Sheets("A" & i).columns(1).Copy  Workbooks("RESULTAT.xls").Sheets("Resultat").columns(j)
    Workbooks("A" & i & ".csv").Close
    Next i
    Edit : la première méthode pour avoir la lettre est amusante mais compliqué passer par le numéro de colonne est bien plus simple

    merci bcp! je pense qu'avec les colonnes ca devrait etre bon

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

Discussions similaires

  1. [XL-2007] Rechercher et copier une colonne sans sélectionner la feuille (avec find)
    Par Danieldu54 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 05/07/2011, 20h06
  2. Réponses: 6
    Dernier message: 19/03/2009, 10h22
  3. Réponses: 11
    Dernier message: 18/10/2007, 12h49
  4. Réponses: 6
    Dernier message: 10/08/2006, 15h45
  5. [FLASH MX] copier une image chargée avec loadClip
    Par JulPoWeR dans le forum Flash
    Réponses: 4
    Dernier message: 02/09/2005, 20h07

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