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 feuille sur place pour garder valeur et format uniquement


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 30
    Points : 20
    Points
    20
    Par défaut copier feuille sur place pour garder valeur et format uniquement
    Bonjour !

    Voila je m'arrache les cheveux sur un truc con, mais a croire que je suis le seul a vouloir faire ce type de requête, lol

    Je voudrais tout simplement copier coller les cellules de mon classeur de la feuille 2 à "sheet1" de la cellule A1 à la derniere cellule active (car ce n'est pas toujours la meme cellule active)

    j'ai écrit ceci :
    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 ValForm()
    Dim i As Worksheet
     
    For Each i In ActiveWorkbook.Sheets
        If i = Sheets("Scoreboard") Then
        i = i + 1
        Range("A1:Activecell").Select
        i.Copy
        i.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        Else
        i.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        Range("A1:Activecell").Select
        i.Copy
        End If
    Next i
    End Sub
    J'ai également tenté ceci :
    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 ValForm()
     
    scoreB = Worksheets.Count
     
    For i = scoreB + 1 To Sheet1 Step 1
     
        Application.DisplayAlerts = False
        Sheets(i).Select
        Range("A1:Activecell").Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        Application.DisplayAlerts = True
        Application.CutCopyMode = True
    Next i
     
    End Sub
    A chaque fois j'ai un problème avec le paste

    Sa finit par me tuer, parceque je pense pas qu'il manque grand chose, mais j'ai beau modifier mon pgm Nothing !

    Je prend tout idée

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 553
    Points : 566
    Points
    566
    Par défaut
    Bonjour,
    j'ai du mal à comprendre ce que tu veux faire...

    Néanmoins :
    1 - Attention à lafeuille sélectionnée avant de faire tes copier/coller sinon normal que çà ne se passe aps dans la feuille souhaitée
    2 - Le Paste plante peut être parce que tu cherches à copier une feuille complète dans une plage de cellule ==> peut-etre un problème d plage de données (ex : une feuille complète dans une plage qui va de A1 à D4 par exemple)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    Mais en fait je suis entièrement conscient du choix des pages ^^

    J'explique, la page 1 s'appelle Scoreboard et dans les 2 code du dessus on remarque que je la sélectionne pas (ou du moins c'est mon souhait)

    Le problème comme tu dis viens peut etre du fait que je copie pas un range mais une feuille, mais moi je crois bien indiquer que je sélectionne le range donc j'avoue ne pas savoir comment il pourrait croire qu'il s'agit d'une feuille

  4. #4
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    bonjour à tous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    scoreB = Worksheets.Count
     
    For i = scoreB + 1 To Sheet1 Step 1
        
        Application.DisplayAlerts = False
        Sheets(i).Select
        Range("A1:Activecell").Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        Application.DisplayAlerts = True
        Application.CutCopyMode = True
    Next i
    je trouve plein d'incherence dans ton code
    scoreB etant le nombre total de tes feuilles, sheets(i (soit en premier ScoreB+1)) te renverra une erreur (1004) : sheet1 c'est quoi, dans la macro telle que tu la montre sheet1 a une valeur de 0, step 1 n'est pas utile don en finalité tu as une boucle dans laquelle tu ne passes jamais
    exemple : 10 feuilles cela te donne :
    for i = 11 to 0 step 1 ' or de 11 à zero je ne realise jamais ma boucle (heureusement sinon la 2 eme ligne en rouge aurait planté

    Activecell n'est pas une adresse : je verrai mieux : Range("A1:" & activecell.address) quoique je trouve cela dangereux puis activecell est la cellule active donc pas forcement celle que l'on veut

    donc pour la boucle je verrai plutot :
    For i = 1 to sheets.count

    et pour le range : Range("A1:"& activecell.value)
    maintenant si c'est pour tout copier :
    cells.copy
    Range("A1").pastespecial .........................

  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 546
    Points
    15 546
    Par défaut
    Si j'ai bien compris, tu peux tester ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    For Each i In ActiveWorkbook.Sheets
        If i = Sheets("Scoreboard") Then
        i = i + 1
        Range("A1:" & Activecell.address).Select
        i.Copy
        i.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        Else
        Range("A1:" & Activecell.address).Select
        i.Copy
        i.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        End If
    Next i
    Idem pour l'autre procédure
    Et inverse tes deux dernières lignes de celle-ci

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    Aie nop les gens ça ne fonctionne pas
    Il n'accepte toujours pas le "paste"

    Je suis in the caca, lol !

    Pour info : Mon fichier comporte un tas de feuille la première s'appelle scoreboard et la derniere sheet1.

    Je pense en effet que le programme ne copie peut etre pas les cellules allant de A1 à la derniere cellule active mais plutot une feuille, non ?

    Ah je viens de remarquer un truc, mais activecell.adress sa donne la dernière cellule active ? ou sa donne l'adresse de la derniere cellule remplie ? Parceque moi j'aimerais la dernière cellule remplie !

    Je ne sais pas si c'est ça que sa fait

  7. #7
    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 546
    Points
    15 546
    Par défaut
    Je n'avais pas tout vu J'aurais dû mieux lire ce qu'a mis wilfried, ton i.copy ne rime à rien.
    Effectivement, activecell.adress donne la dernière cellule active.
    Pour la plage complète tu peux utiliser ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub test()
        Range(ActiveSheet.UsedRange.Address).Copy
        Range("A1").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
    End Sub

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    J'ai pris en compte la derniere réponse et j'ai enfin trouvé un truc qui fonctionne

    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
    Sub ValForm()
     
    Sheet1 = Worksheets.Count
     
    For i = Sheet1 - 1 To 3 Step -1
        If i <> 4 Then
        Application.DisplayAlerts = False
        Sheets(i).Select
        Range(ActiveSheet.UsedRange.Address).Copy
        Range("A1").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        Range("A1").Select
        Application.DisplayAlerts = True
        Application.CutCopyMode = False
        Else
        Sheets(i).Select
    '    Range("O1:R37").Copy
    '    Range("O1").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        Range("O1:R37").Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False
        Range("A1").Select
        End If
    Next i
    End Sub
    Je copie colle sur soit meme toute les feuilles allant de l'avant dernière a la 3ème (exepté la 4ème que j'ai du copier différemment)
    mais voila c'est résolu, merci beaucoup à vous pour m'avoir guidé et merci un peu aussi à moi quand meme

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

Discussions similaires

  1. Copier feuille sur autre autre feuille avec conditions
    Par vins86 dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 10/11/2013, 10h28
  2. [XL-2007] Copier les valeurs d'une feuille sur des autres automatiquement
    Par Wenth dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/06/2013, 01h36
  3. Macro pour copier feuille voulu d'un classeur fermé sur classeur ouvert
    Par Nicojez dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/06/2012, 15h46
  4. Réponses: 82
    Dernier message: 05/02/2011, 14h34
  5. boucle sur feuille pour trouver valeur
    Par ericdev67 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/11/2010, 06h58

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