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 des tableaux depuis plusieurs feuille est coller dans une autre feuille du même classeur


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 11
    Points : 10
    Points
    10
    Par défaut copier/coller des tableaux depuis plusieurs feuille est coller dans une autre feuille du même classeur
    Bonjour,

    j'essaie de copier plusieurs tableaux à partir de différentes feuilles selon condition ( çàd si le mois de la cellule M8 de toutes les feuilles du classeurs égale à la date dans la cellule E5 de l'onglet "Fichier Presta")

    alors ces tableaux j'aimerai les coller dans l'onglet "Fichier Presta"

    voici mon code. j'arrive à trouver les feuilles que je veux en affichant les noms des feuilles avec un msgbox
    mais je n'arrive pas à coller dans la feuille que je veux. quand j’exécute le code ça ne copie/colle 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
    Sub fichier_presta()
     
     
     Dim ws As Worksheet
     
     For Each ws In ThisWorkbook.Worksheets
        ws.Activate
     
        If Range("E1") = "CS&L Feuille KIT" And ActiveSheet.Name <> "Template KIT" And ActiveSheet.Name <> "Menu" And ActiveSheet.Name <> "Liste des Kits" Then
            If ws.Range("M8") = Worksheets("Fichier Presta").Range("E5") Then 
            MsgBox (ActiveSheet.Name) 'jusqu'ici ça marche
     
            'code du copier coller
            Range("A23:I34").Select '
            Selection.Copy
     
     
            If Worksheets("Fichier Presta").Range("B12") = "" Then
            i = 12
            Else
            i = Worksheets("Fichier Presta").Range("B65535").End(xlUp).Row + 1 
            'i = i + 1
            ActiveSheet.Paste
             End If
     
     
            End If
        End If
    Next ws
     
     
     
    End Sub
    Merci pour votre aide

  2. #2
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonjour Fzayoubi, bonjour le forum,

    Peut-être comme ça :
    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 fichier_presta()
    Dim O As Worksheet
    Dim OD As Worksheet
    Dim DEST As Range
     
    Set OD = Worksheets("Fichier Presta")
    For Each O In Worksheets
        Debug.Print O.Name
        If Not O.Name = "Template KIT" And Not O.Name = "Menu" And Not O.Name = "Liste des Kits" Then
            If O.Range("E31") = "CS&L Feuille KIT" Then
                 If OD.Cells(12, "B").Value = "" Then Set DEST = Cells(12, "B") Else Set  DEST = OD.Cells(Application.Rows.Count, "B").End(xlUp).Offset(1, 0)
                O.Range("A23:I34").Copy DEST
            End If
        End If
    Next O
    End Sub

    [Édition]

    Modification du code suite a la juste remarque de Marcel...

    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
    Sub fichier_presta()
    Dim O As Worksheet
    Dim OD As Worksheet
    Dim DEST As Range
     
    Set OD = Worksheets("Fichier Presta")
    For Each O In Worksheets
        If Not O.Name = "Template KIT" And Not O.Name = "Menu" And Not O.Name = "Liste des Kits" Then
            If O.Range("E31") = "CS&L Feuille KIT" Then
                 If OD.Cells(12, "B").Value = "" Then Set DEST = OD.Cells(12,  "B") Else Set  DEST = OD.Cells(Application.Rows.Count,  "B").End(xlUp).Offset(1, 0)
                O.Range("A23:I34").Copy DEST
            End If
        End If
    Next O
    End Sub
    À plus,

    Thauthème

    Je suis Charlie

  3. #3
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour à vous,

    Thautheme, rattache bien toustes objets Range.

    Pour ce cas de figure, j'aurais tendance à alimenter une variable tableau dont j'appliquerai la transpositions sur la feuille de destination.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  4. #4
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Thautheme Voir le message
    Bonjour Fzayoubi, bonjour le forum,

    Peut-être comme ça :
    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 fichier_presta()
    Dim O As Worksheet
    Dim OD As Worksheet
    Dim DEST As Range
     
    Set OD = Worksheets("Fichier Presta")
    For Each O In Worksheets
        Debug.Print O.Name
        If Not O.Name = "Template KIT" And Not O.Name = "Menu" And Not O.Name = "Liste des Kits" Then
            If O.Range("E31") = "CS&L Feuille KIT" Then
                 If OD.Cells(12, "B").Value = "" Then Set DEST = Cells(12, "B") Else Set  DEST = OD.Cells(Application.Rows.Count, "B").End(xlUp).Offset(1, 0)
                O.Range("A23:I34").Copy DEST
            End If
        End If
    Next O
    End Sub

    [Édition]

    Modification du code suite a la juste remarque de Marcel...

    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
    Sub fichier_presta()
    Dim O As Worksheet
    Dim OD As Worksheet
    Dim DEST As Range
     
    Set OD = Worksheets("Fichier Presta")
    For Each O In Worksheets
        If Not O.Name = "Template KIT" And Not O.Name = "Menu" And Not O.Name = "Liste des Kits" Then
            If O.Range("E31") = "CS&L Feuille KIT" Then
                 If OD.Cells(12, "B").Value = "" Then Set DEST = OD.Cells(12,  "B") Else Set  DEST = OD.Cells(Application.Rows.Count,  "B").End(xlUp).Offset(1, 0)
                O.Range("A23:I34").Copy DEST
            End If
        End If
    Next O
    End Sub

    c'est exactement ce que je cherchais ! merci beaucoup tu m'as sauvé la vie

  5. #5
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Par perfectionnisme:

    - Mieux vaut toujours déclarer les arguments d'une méthode
    - Annihiler le mode copie après méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.CutCopymode = False

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


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

Discussions similaires

  1. [LibreOffice][Tableur] perte diagramme sur copier coller dans une autre feuille de calc !
    Par samkad dans le forum OpenOffice & LibreOffice
    Réponses: 0
    Dernier message: 26/02/2018, 09h28
  2. Réponses: 4
    Dernier message: 17/05/2017, 06h31
  3. Macro copier coller dans une autre feuille
    Par olivverte dans le forum Excel
    Réponses: 23
    Dernier message: 17/12/2013, 14h35
  4. [XL-2000] Consolidation de feuilles dans une autre d'un même classeur
    Par juju05 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/01/2010, 15h54
  5. Réponses: 8
    Dernier message: 12/08/2009, 11h32

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