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 des plages variables de plusieurs feuilles vers une seule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 9
    Par défaut copier des plages variables de plusieurs feuilles vers une seule
    bonjour,
    débutatnte en VBA, j'aimerais que vous m'aidiez a comprendre mon erreur.

    ce que je cherche a faire: copier des colonnes venant de différentes feuilles (appelées Small pro et CVIT dans le code), ces colonnes pouvant comporter du vide, et les mettre les unes a la suite des autres dans une nouvelle feuille du meme classeur (appelée frsct total).

    mon code qui ne fonctionne pas:

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Sub Macro4()
    '
    ' Macro4 Macro
    '
    Dim i As Integer
    Dim k As Integer
     
    Sheets("fcst total").Select
    Range("A2:A65536").Clear
     
    Sheets("SMALL PRO & Private UPDATE").Select
    For i = 2 To 65536
        If Range("Bi", Range(B, i).End(xlToRight)).Value <> "" Then
            Range(B, i).Select
            Selection.Copy
            Sheets("fcst total").Select
            Range(A, i).Select
            ActiveSheet.Paste
        Else: Range(B, i) = Range(B, i + 1)
        End If
    Next i
     
    Sheets("CVIT UP DATE").Select
    For k = 2 To 65536
        If Range("Jk", Range(j, k).End(xlToRight)).Value <> "" Then
            Range(j, k).Select
            Selection.Copy
            Sheets("fcst total").Select
            Cells(Range("A65536").End(xlUp).Row, 1).Select
            ActiveSheet.Paste
        Else: Range(j, k) = Range(j, k + 1)
        End If
    Next k
     
    End Sub
    Merci d'avance...

  2. #2
    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
    Par défaut
    Bonjour irene N°, bienvenue sur le forum.
    Si tu veux qu'on puisse lire ton code, tu dois le placer entre balise Code. Tu sélectionnes le code, 1 clic sur #, épicétou.
    Pour corriger, tu as le bouton Editer en bas de ton message.
    A+

  3. #3
    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
    Par défaut
    Regarde bien macorrection, elle est partielle, je te laisse le soin de la terminer
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Sub Irene()
    Dim i As Integer
    Dim k As Integer
    Dim FL1 As Worksheet
    Dim FL2 As Worksheet
    Dim FL2 As Worksheet
        Set FL1 = Worksheets("SMALL PRO & Private UPDATE")
        Set FL2 = Worksheets("CVIT UP DATE")
        Set FL3 = Worksheets("fcst total")
        FL3.Range("A2:A65536").ClearContents
     
        For i = 2 To 65536 ' là je suppose que B et A sont des colonnes...
            If FL1.Range("B" & i, FL1.Range("B" & i).End(xlToRight)).Value <> "" Then
                FL1.Range("B" & i).Copy destination:=FL3.Range("A" & i)
            Else
                FL1.Range("B" & i) = FL1.Range("B" & i + 1)
                'tu vérifies, je ne comprends pas ce que tu fais
                'Pourquoi colles-tu la donnée de la ligne suivante
                'sur laquelle tu vas passer le tour suivant
                'En faisant ça tu modifies la feuille d'origine... et c'est pas bien ^^^
            End If
        Next i
        
        'Les Ranges de cette boucle restent à corriger
        For k = 2 To 65536
            'Là je ne comprends pas ce que tu testes. C'est quoi Jk ?
            'Je pourrais supposer que le pb est le même que dans la boucle précédente
            'mais dans l'expectative, je te laisse comprendre ce que j'ai fait plus haut
            'pour la correction
            If FL2.Range("Jk", FL2.Range(j, k).End(xlToRight)).Value <> "" Then
                FL2.Range(j, k).Copy destination:=FL3.Cells(FL3.Range("A65536").End(xlUp).Row, 1)
            Else
                FL2.Range(j, k) = FL2.Range(j, k + 1)
            End If
        Next k
    End Sub
    A+

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 9
    Par défaut
    merci beaucoup pour ce début de réponse.
    je n'ai pas été assez précise je pense.

    en fait, j'ai pris i et k pour désigner les lignes, mais ca je crois que tu l'as compris.
    Je voudrais copier la colonne B de la feuille "Small pro" dans la colonne A de la feuille frcst total. Puis, a la suite de cette copie, je voudrai coller la colonne J de la feuille CVIT. Mon problème est qu'il y a des cellules blanches dans ces colonnes et je ne veux les prendre que s'il existe des cellules non vides sur la meme ligne.

    Donc dans la premiere boucle ce que je voudrai faire c'est:
    pour i de 2 a 20000
    s'il y a des cellules non vides sur la ligne i ,
    je copie la cellule (B, i)
    je sélectionne la premiere cellule vide de la colonne A de la feuille frsct total,
    je colle dans cette cellule,
    sinon, je passe a la cellule (B,i+1) de la feuille Small pro
    et ainsi de suite jusqu'à avoir toutes les cellules de la colonne collées dans "frcst total", et même les vides qui ont qd meme des references dans les autres colonnes de la meme ligne...

    A la suite de ca, ma deuxième boucle serait la meme pour l'autre feuille et le collage commencerait a la cellule suivant le collage décrit plus haut...

    j'espere que c'est plus clair...

    merci!

  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
    Par défaut
    Citation Envoyé par Tu
    et ainsi de suite jusqu'à avoir toutes les cellules de la colonne collées dans "frcst total", et même les vides qui ont qd meme des references dans les autres colonnes de la meme ligne...
    Si tu copies toutes les cellules, même celles qui sont vides, alors pourquoi ne pas copier la plage ?
    En fait, je crois comprendre ton pb, tu ne vois pas comment arrêter la copie à la fin des données de chaque feuille... Si c'est ça, tu dis
    A+

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 9
    Par défaut
    oui c'est ca!
    et je ne sais pas non plus comment coller une autre plage qui vient donc d'une autre feuille, juste a la suite...

Discussions similaires

  1. [XL-2003] Récupérer des données de plusieurs feuilles vers une seule
    Par ikobana dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/12/2014, 21h15
  2. [XL-2003] Compilation des données de plusieurs feuilles en une seule?
    Par USnico dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/11/2009, 18h08
  3. [XL-2007] Créer une boucle pour copie des tableaux de plusieurs feuilles sur une seule
    Par rvtoulon dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 22/09/2009, 17h12
  4. Importer des données de 250 feuilles vers une seule
    Par Bryan78 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/04/2008, 16h18
  5. Réponses: 8
    Dernier message: 11/02/2008, 16h22

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