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 plusieurs onglets avec cellules d'un classeur et les compiler dans une page d'un autre classeur [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué Avatar de Clara44
    Femme Profil pro
    Agent de maitrise
    Inscrit en
    Mars 2023
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Agent de maitrise
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2023
    Messages : 10
    Par défaut copier plusieurs onglets avec cellules d'un classeur et les compiler dans une page d'un autre classeur
    Bonjour,

    j'aimerais copier plusieurs onglets avec des cellules spécifiques d'un classeur et les compiler dans une page d'un autre classeur, est ce possible ?
    pour corser la chose il faudrait que les onglets a copier ne soit pas définit par leur nom mais par leur position

    bien cordialement,

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Bonjour.

    Ne peux-tu simplement utiliser une formule qui réfère depuis ton classeur cible à tes feuilles dans le classeur source ?

    Si non en supposant que tes feuilles viennent toutes du même classeur et sont toutes à la même position dans les feuilles sources, ton code être quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    dim indexSourceList as variant: indexSourceList=array(1,8, 21, 36) 'Numéros bidons, juste pour illustrer. C'est la liste des positions des feuilles dans la source de données. Assez dangereux comme méthode si jamais tes feuilles changent de place.
     
    dim indexSource as variant
    dim targetRowNumber
    dim rng as range
     
    targetRowNmber=14 'Aussi pour illustrer
     
    for each indexSource in indexSourceList
        set rng=workbooks("TaSource.xlsx").worksheet(indexSource).range("A1:Z15").copy
        workbooks("TaCible.xlsx").worksheet(indexSource).range("D" & targetRowNumber).pastespecial
        targetRowNmber=targetRowNmber+15 'Descend du nombre de lignes dans la source
    next indexSource
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre habitué Avatar de Clara44
    Femme Profil pro
    Agent de maitrise
    Inscrit en
    Mars 2023
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Agent de maitrise
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2023
    Messages : 10
    Par défaut
    Bonjour marot_r,

    Merci beaucoup de m'apporter ton aide et pour être plus précise, il faudrait que dans le classeur ouvert, la feuille sélectionné vient copier les 3 feuilles (avec cellules) qui la précède,
    pour venir les fusionner dans une nouvelle feuille dans un classeur déjà existant, avec si possible un message box pour la nommer.
    pour info le nom des feuilles ne sera jamais le même mais la position des feuilles a copier identiques, également les plages de cellules a copier identiques sur toutes les pages ... je ne sais pas si je suis très clair
    je te joins un fichier pour exemple.PLANNING 2023.xlsx

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonjour
    La demande n'est pas claire au moins pour moi et le classeur joint est vide et ne donne aucune idée sur ce que tu cherches à faire
    Pour rassembler des onglets dans un seul classeur pense à POWERQUEY, sans codification rapide simple et fiable
    Si vous insister sur VBA pour une raison que j'ignore
    Ma compréhension de la demande est la suivante : tu veux archiver les données de ton classeur ouvert (que certains onglets) dans un classeur fermé non?
    si non et pour espérer de l'aide, reformule ta demande avec un exemple et une simulation du résultat souhaité
    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
    Sub test()
    Dim wkA As Workbook, wkB As Workbook
    Dim chemin As String, fichier As String
    Dim j As Long
    Application.ScreenUpdating = False
    Set wkA = ThisWorkbook 'ton dossier ouvert ou se trouve les données
    derlig = wkA.Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row ' adapter feuil1 avec le nom de ton onglet ou se trouve tes données
    'derlig pour chercher la dernière ligne non vide de la colonne A ou se trouve le nom des onglets
    chemin = "C:\Users\DELL\Desktop\test\" ' ici le chemin du dossier ou se trouve les fichier à remplir
    For j = 2 To derlig ' parcourir toute la colonne A (pour les noms des onglets)
    fichier = wkA.Sheets("Feuil1").Cells(j, "A") ' pour récupérer le nom de l'onglet
    Workbooks.Open chemin & fichier ' aller ouvrir l'onglet
    Set wkB = ActiveWorkbook ' la classeur ouvert prends le nom WkB
    wkB.Sheets("Feuil2").Range("B2") = wkA.Sheets("Feuil1").Cells(j, "B") 'comme exemple je remplie l'onglet feuil2 cellule B2 avec l'équivalent du nom de l'onglet en colonne B
    wkB.Close True 'fermer le classeur
    Next j 'classeur suivant
     Application.ScreenUpdating = True
    End Sub

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Bonjour Clarra44

    Citation Envoyé par Clara44
    il faudrait que dans le classeur ouvert, la feuille sélectionné vient copier les 3 feuilles (avec cellules) qui la précède,
    pour venir les fusionner dans une nouvelle feuille dans un classeur déjà existant, avec si possible un message box pour la nommer.
    Ok, il serait probalement plus simple de mettre le code dans le fichier de destination ou alors carrément dans un autre classeur qui manipulerai le classeur source et le classeur cible.

    Pour trouver une feuille tu peux utiliser son numéro donc pour copier les 3 feuilles précédentes c'est assez direct :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim lngISourceFeuille as long
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lngSourceFeuille = activesheet.index 'Supposant que tu exécutes le code dans le classeur qui contient les données source
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lngIFeuille = wbkSource.activesheet.index 'Supposant que tu exécutes le code dans le classeur qui ne contient pas les données source
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    dim shtSource as worksheet
     
    for lngISourceFeuille=lngSourceFeuille - 3 to lngSourceFeuille - 1
       set shtSource=wbkSource.worksheet(lngISourceFeuille)
       'ici le code de copie de la feuille source à la feuille cible.
    next lngISourceFeuille 
     
    set shtSource =nothing
    Pour saisir le nom tu peux utiliser InputBox, très simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strNomFeuilleCible=inputbox("Entrer le nom de la feuille cible")
    Éventuellement, prévoir du code pour valider :
    • Que la réponse n'est pas vide.
    • Que la réponse correspond à une feuille qui existe.


    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  6. #6
    Membre habitué Avatar de Clara44
    Femme Profil pro
    Agent de maitrise
    Inscrit en
    Mars 2023
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Agent de maitrise
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2023
    Messages : 10
    Par défaut
    Bonjour,

    J'ai testé vos codes mais je n'arrive a rien je dois être vraiment mauvaise .....

    Nom : Capture.PNG
Affichages : 368
Taille : 40,8 KoNom : Capture2.PNG
Affichages : 361
Taille : 14,6 KoPLANNING 2023H.xlsm

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

Discussions similaires

  1. [Toutes versions] Avec Excel VB entrer nom & mot de passe dans une page Internet Explorer & cliquer
    Par clubleo dans le forum Microsoft Office
    Réponses: 1
    Dernier message: 25/11/2019, 17h36
  2. Réponses: 0
    Dernier message: 30/08/2017, 13h39
  3. Réponses: 2
    Dernier message: 11/05/2017, 16h05
  4. [XP]copier plusieurs fichiers avec la commande copy
    Par Smip99 dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 16/06/2008, 19h35
  5. Réponses: 7
    Dernier message: 14/09/2005, 10h50

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