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 feuille(valeur seulement) avec cellule fusionnée


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2008
    Messages : 51
    Points : 29
    Points
    29
    Par défaut Copier une feuille(valeur seulement) avec cellule fusionnée
    Bonjour, je cherche à copier les valeurs d'une feuille vers un autre onglet.

    Présentement je réussi à les coller, mais je veux simplement les valeurs. J'ai déjà tenté de faire pastespecial, mais cela ne m'a pas aider: le message d'erreur, impossible de coller des valeurs sur une feuille fusionner apparait

    Merci beaucoup

    Marie

    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
        'pour savoir le nombre de feuille
        ThisWorkbook.Sheets.Add after:=Worksheets(Worksheets.Count)
        nbfeuille = Worksheets.Count
     
        'copier les données de la feuille 2 vers le dernier ongle
        ThisWorkbook.Sheets(2).Cells.Copy
        ThisWorkbook.Sheets(nbfeuille).Select
        Cells.Select
        ActiveSheet.Paste
        Sheets(nbfeuille).Select
        Cells(1, 1).Select
        Application.CutCopyMode = False
     
        'donne un nom à mon onglet collé
        nomfeuille = ThisWorkbook.Sheets(2).Name
        nomfeuille = Mid(nomfeuille, 1, 3)
        ThisWorkbook.Sheets(nbfeuille).Name = nomfeuille & -2008
     
        Set nomfeuille = Nothing
     
        ' copier les données de la feuille 1 vers la feuille 2
        ThisWorkbook.Sheets(1).Cells.Copy
        ThisWorkbook.Sheets(2).Select
        Cells.Select
        ActiveSheet.Paste
        Sheets(1).Select
        Cells(1, 1).Select
        Application.CutCopyMode = False
     
        'donne un nom à mon onglet collé
        nomfeuille = ThisWorkbook.Sheets(1).Name
        nomfeuille = Mid(nomfeuille, 1, 3)
        ThisWorkbook.Sheets(2).Name = nomfeuille & 2008
     
        Set nomfeuille = Nothing

  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
    Points : 15 543
    Points
    15 543
    Par défaut
    Bonjour carpediem, bienvenue sur le forum.
    Comme message d'erreur, tu mets " impossible de coller des valeurs sur une feuille fusionner apparait"
    Je suppose que c'est "cellules fusionnées". Ceci dit, les cellules fusionnées n'empêchent pas le copier/coller
    Par contre, teste ç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
        'pour savoir le nombre de feuille
        ThisWorkbook.Sheets.Add after:=Worksheets(Worksheets.Count)
        nbfeuille = Worksheets.Count
     
        ThisWorkbook.Sheets(2).Cells.Copy  ThisWorkbook.Sheets(nbfeuille).Range("A1")
     
        'donne un nom à mon onglet collé
        nomfeuille = Mid(ThisWorkbook.Sheets(2).Name, 1, 3)
        ThisWorkbook.Sheets(nbfeuille).Name = nomfeuille & -2008
     
        ' copier les données de la feuille 1 vers la feuille 2
        ThisWorkbook.Sheets(1).Cells.Copy ThisWorkbook.Sheets(2).Range("A1")
     
        'donne un nom à mon onglet collé
        nomfeuille = Mid(ThisWorkbook.Sheets(1), 1, 3)
        ThisWorkbook.Sheets(2).Name = nomfeuille & 2008
    Ceci dit, avec copy tu colles tout et non les valeurs seules.
    Précise ton besoin.
    Quant à nomfeuille, il s'agit d'une variable de type string, non d'une instance. Tu ne dois pas utiliser Set ni Nothing. A la limite, tu peux mettre
    nomfeuille = ""
    Mais c'est inutile ici
    Bonne soirée

    Edit
    Code corrigé

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2008
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    Bien j'ai collé le code , mais un autre message d'erreur m'apparait!

    Propriété ou méthode non gérer par cet objet.

    j'Ai aucune idée de ce que cela peut bien vouloir dire...

    Par contre, je sais pas si cela aide, mais dans mon fichier excel il a tout de même réussi à créer une feuille à la fin de toutes mes feuilles déjà existente.

    Enfin, je vous mets le code à nouveau avec ou cela à maintenant bloqué

    merci

    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
    Application.ScreenUpdating = False ' pour cacher le processus
        
        'pour savoir le nombre de feuille
        ThisWorkbook.Sheets.Add after:=Worksheets(Worksheets.Count)
        nbfeuille = Worksheets.Count
        
        
        ThisWorkbook.Sheets(2).Cells.Copy
        ThisWorkbook.Sheets(nbfeuille).Range ("A1")
        ActiveSheet.Paste
        Sheets(nbfeuille).Select
        Cells(1, 1).Select
        Application.CutCopyMode = False
     
        'donne un nom à mon onglet collé
        nomfeuille = Mid(ThisWorkbook.Sheets(2).Name, 1, 3)
        ThisWorkbook.Sheets(nbfeuille).Name = nomfeuille & -2008
            
        ' copier les données de la feuille 1 vers la feuille 2
        ThisWorkbook.Sheets(1).Cells.Copy
        ThisWorkbook.Sheets(2).Range ("A1")
     
        'donne un nom à mon onglet collé
        nomfeuille = Mid(ThisWorkbook.Sheets(1), 1, 3)
        ThisWorkbook.Sheets(2).Name = nomfeuille & 2008

  4. #4
    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
    J'ai effectivement commis une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        ThisWorkbook.Sheets(2).Cells.Copy  ThisWorkbook.Sheets(nbfeuille).Range("A1")
        'ActiveSheet.Paste ' SUPPRIME CETTE LIGNE
        Sheets(nbfeuille).Select
        Cells(1, 1).Select
    Et ne modifie pas mon code
    Cette syntaxe fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        ThisWorkbook.Sheets(2).Cells.Copy  ThisWorkbook.Sheets(nbfeuille).Range("A1")
    qui sous-entend destination:=
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        ThisWorkbook.Sheets(2).Cells.Copy  destination:=ThisWorkbook.Sheets(nbfeuille).Range("A1")
    "Destination:=" est facultatif.

    mais celle-ci ne fonctionne pas
    ThisWorkbook.Sheets(2).Cells.Copy
    ThisWorkbook.Sheets(nbfeuille).Range ("A1")
    ActiveSheet.Paste
    Tu n'as pas besoin de sélectionner quoi que ce soit pour copier une feuille, une cellule ou ce que tu veux d'une feuille dans l'autre.

    Je corrige mon code, tu pourras le tester tel quel.
    A+

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2008
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    salut, bien merci le code ne fait plus d'erreur par contre, il me copie toujours les formules?

    Est-ce qu'avec ce code, il est censé copier que les valeurs?

    Merci

    Marie

  6. #6
    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
    Citation Envoyé par carpediem
    Est-ce qu'avec ce code, il est censé copier que les valeurs?
    Citation Envoyé par ousk'
    Ceci dit, avec copy tu colles tout et non les valeurs seules.
    Donc, j'avais bien compris que ton code ne faisait pas ce que tu voulais... Pour coller les valeurs et le format, tu dois procéder en deux temps : Format puis valeurs. Auquel cas le code devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        ThisWorkbook.Sheets(2).Cells.Copy  
        ThisWorkbook.Sheets(nbfeuille).Range("A1").PasteSpecial Paste:=xlPasteFormats
        ThisWorkbook.Sheets(nbfeuille).Range("A1").PasteSpecial Paste:=xlPasteValues
    Bonne nuit

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2008
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    Bonjour, j'ai a nouveau un autre erreur qui survient.

    Impossible de coller les informations car les zones à copier sont de forme et de taille différente.

    Je mets à nouveau le code ici, en espérant que je vais répondre aux spécifications, car je sais pas trop si c'est bien cela que je dois faire

    merci
    Marie

    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
     'pour savoir le nombre de feuille
        ThisWorkbook.Sheets.Add after:=Worksheets(Worksheets.Count)
        nbfeuille = Worksheets.Count
        
        'Copier les données de la feuille 2 vers la dernière feuille
        ThisWorkbook.Sheets(2).Cells.Copy
        ThisWorkbook.Sheets(nbfeuille).Range("A1").PasteSpecial Paste:=xlPasteFormats
        ThisWorkbook.Sheets(nbfeuille).Range("A1").PasteSpecial Paste:=xlPasteValues
     
        'donne un nom à mon onglet collé
        nomfeuille = Mid(ThisWorkbook.Sheets(2).Name, 1, 3)
        ThisWorkbook.Sheets(nbfeuille).Name = nomfeuille & -2008
            
        ' copier les données de la feuille 1 vers la feuille 2
        ThisWorkbook.Sheets(1).Cells.Copy
        ThisWorkbook.Sheets(2).Range("A1").PasteSpecial Paste:=xlPasteFormats
        ThisWorkbook.Sheets(2).Range("A1").PasteSpecial Paste:=xlPasteValues
     
        'donne un nom à mon onglet collé
        nomfeuille = Mid(ThisWorkbook.Sheets(1).Name, 1, 3)
        ThisWorkbook.Sheets(2).Name = nomfeuille & 2008
    J'ai été vérifier Excel, et le programme à pu copier une autre feuille avec les formes et les couleurs, mais pas le texte. D'ailleurs il bloque ou j'ai mis du rouge.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2008
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    ok présentement je trouve excel très drôle!

    Je vais remettre le code à nouveau, car maintenant il arrive à copier les valeurs de la feuille 2 vers celle nouvelle. Mais pour ce qui est de la feuille 1 vers la feuille 2, il veu plus rien savoir...

    J'y comprends plus rien

    Hey bien , j'en susi finalement venu à bout!!

    Je devais vider toute la page 2 avant qu'elle puisse recevoir de nouveau chiffre.

    Enfin je suis sur que mon code est pas optimal, mais il fonctionne!!

    Merci encore

    Marie

    Ceci est le code modifié final
    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
     
        'pour savoir le nombre de feuille
        ThisWorkbook.Sheets.Add after:=Worksheets(Worksheets.Count)
        nbfeuille = Worksheets.Count
     
        'Copier les données de la feuille 2 vers la dernière feuille
        ThisWorkbook.Sheets(2).Cells.Copy
        ThisWorkbook.Sheets(nbfeuille).Select
        Range("A1").Select
        Selection.PasteSpecial Paste:=xlPasteValues
        Selection.PasteSpecial Paste:=xlPasteFormats
     
        ThisWorkbook.Sheets(2).Range("A1:Z100").Delete
     
        'donne un nom à mon onglet collé
        nomfeuille = Mid(ThisWorkbook.Sheets(2).Name, 1, 3)
        ThisWorkbook.Sheets(nbfeuille).Name = nomfeuille & -2008
     
        ' copier les données de la feuille 1 vers la feuille 2
        ThisWorkbook.Sheets(1).Cells.Copy
        ThisWorkbook.Sheets(2).Select
        Range("A1").Select
        Selection.PasteSpecial Paste:=xlPasteValues
        Selection.PasteSpecial Paste:=xlPasteFormats
     
        'donne un nom à mon onglet collé
        nomfeuille = Mid(ThisWorkbook.Sheets(1).Name, 1, 3)
        ThisWorkbook.Sheets(2).Name = nomfeuille & 2008

  9. #9
    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
    Je t'ai donné un code qui fonctionne chez moi, mais si tu tiens absolument à tes "select" je ne vais pas te décourager...
    Bonne chance

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

Discussions similaires

  1. [XL-2010] Copier une feuille d'un classeur existant sur un nouveau classeur avec vba
    Par missy060 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/06/2013, 00h46
  2. Réponses: 3
    Dernier message: 21/03/2013, 14h43
  3. [XL-2007] Copier une feuille avec des TDC et les garder indépedant
    Par oekoniko dans le forum Excel
    Réponses: 3
    Dernier message: 09/07/2012, 11h54
  4. Excel copier une feuille "APRES" avec jscript
    Par titouille dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/01/2009, 10h32
  5. [E-07] Copier une feuille avec un bouton
    Par chrnoe dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/01/2009, 18h56

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