Copier/coller une plage de cellule de plusieurs feuilles

Bonjour tous,

Je débute dans le VBA.

Je souhaite copier une plage de cellule de plusieurs feuilles (toujours la même plage, B2-P21) et coller sur une feuille "Synthèse" les résultats a la suite, ma contrainte est que le nombre de feuille source change + ou - et qu'il ne faut pas récupérer les données des 4 premières feuilles du fichier qui n'ont rien a voir.

Par la suite la macro sera affectée a un bouton, et la feuille "Synthèse" sera clear avant ce copier/coller, le but est d'envoyer cette synthèse par mail avec les évolutions.

J'espère avoir été clair, après je peux joindre le fichier mais j'ai pas mal de chose modifier pour pouvoir le faire.

Merci d'avance pour aide et surtout pour votre temps.

Bonjour Arso, bonjour le forum,

Essaie comme ça :

Sub Macro1()
Dim DEST As Range
Dim S As Worksheet

Set S = Worksheets("Synthèse")
For I = 5 To Sheets(Sheets.Count)
    If Not Sheets(I).Name = "Synthèse" Then
        If S.Range("A1").Value = "" Then Set DEST = S.Range("A1") Else Set DEST = S.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0)
        Sheets(I).Range("B2:P21").Copy DEST
    End If
Next I
End Sub

Bonjour ThauThème,

Tout d'abord merci pour ta réponse si rapide.

J'ai une erreur "erreur 438 propriété ou méthode non gérée par cet objet", sur la ligne du début de la boucle, pourtant "Sheets(Sheets.Count)" retourne bien le nombre de feuille. Et quand je passe de statique (nombre de feuille actuel) ça passe.

Une idée car le nombre de feuille ne sera pas toujours le même.

Re,

il serait peut être plus simple de coller en tant qu'image (cela me va je n'ai pas de modification a faire sur la synthèse)

Et comment tu crées une image ?...

Pas vu ta réponse, (j'ai édité mon autre message)

Pour la partie image c'est bon, j'ai fait au plus simple pour moi en tout cas et ça fonctionne, par contre toujours le problème pour le nombre de feuille

Sub MajSynth()

Dim DEST As Range
Dim S As Worksheet
Dim i As Integer

Set S = Worksheets("Synthèse")
Range("B2").Select
For i = 6 To 10 'Sheets(Sheets.Count)
    If Not Sheets(i).Name = "Synthèse" Then
        Sheets(i).Range("B2:P21").CopyPicture
        S.Paste
    End If
    ActiveCell.Offset(21, 0).Select
Next i

End Sub

C'est bon j'ai fini, pour l'erreur j'ai remplacé Sheets(Sheets.Count) par Sheets.Count et tout roule.

Merci pour ton aide, je galère toujours quand je pars de zéro, j'ai besoin d'un squelette a modifier.

Résultat :

Sub MajSynth()

Dim DEST As Range
Dim S As Worksheet
Dim i As Integer

Set S = Worksheets("Synthèse")
Sheets("Synthèse").DrawingObjects.Delete
Sheets("Synthèse").Select
Range("B2").Select
For i = 6 To Sheets.Count
    If Not Sheets(i).Name = "Synthèse" Then
        Sheets(i).Range("B2:P21").CopyPicture
        S.Paste
    End If
    ActiveCell.Offset(19, 0).Select
Next i

End Sub

PS : Y a t'il une clôture d'une post a faire, une fois résolut ??

Bonne journée ThauThème

Re,

Arf ! Je te dois un bière pour rattraper cette horrible erreur :

For i  = 6 To Sheets(Sheets.Count)

Mais quel c... ! Le pire c'est qu'en relisant je ne m'en suis même pas rendu compte...

Tu as préféré utiliser des Select plutôt que la variable DEST. Je te le déconseille fortement. La règle d'or de VBA c'est justement d'éviter autant que se peut les Select et autres Activate.

Sub MajSynth()
Dim DEST As Range
Dim S As Worksheet
Dim i As Integer

Set S = Worksheets("Synthèse")
S.DrawingObjects.Delete
Set DEST = S.Range("B2")
For i = 6 To Sheets.Count
    If Not Sheets(i).Name = "Synthèse" Then
        Sheets(i).Range("B2:P21").CopyPicture
        DEST.PasteSpecial
        Set DEST = DEST.Offset(19, 0)
    End If
Next i
End Sub

Merci pour le CopyPicture, je ne connaissais pas...

Sinon je pense qu'il doit y avoir une clôture mais je sais même pas où ça se trouve.moment...

Go to Roku page

record enter Roku com activation code appeared on Roku TV. My Roku com activate not working use new Roku code.

Rechercher des sujets similaires à "copier coller plage feuilles"