Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Copie de cellules sur chaques feuilles du classeur

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

excelman

XLDnaute Occasionnel
Bonjour au forum.

Voila je coince un peu sur une macro vba dont voici le contenu qui me sert à copier la valeur de la cellule
G30 sur toutes les cellules au dessus jusqu'à G4 et ceci sur toutes les feuilles sauf les 3 dernières.

Code:
Sub test()
Sheets("1").Select
    Range("G30").Select
    Selection.AutoFill Destination:=Range("G4:G30"), Type:=xlFillDefault
    Range("G4:G30").Select
Sheets("2").Select
    Range("G30").Select
    Selection.AutoFill Destination:=Range("G4:G30"), Type:=xlFillDefault
    Range("G4:G30").Select
Sheets("3").Select
    Range("G30").Select
    Selection.AutoFill Destination:=Range("G4:G30"), Type:=xlFillDefault
    Range("G4:G30").Select
Sheets("4").Select
    Range("G30").Select
    Selection.AutoFill Destination:=Range("G4:G30"), Type:=xlFillDefault
    Range("G4:G30").Select
Sheets("5").Select
    Range("G30").Select
    Selection.AutoFill Destination:=Range("G4:G30"), Type:=xlFillDefault
    Range("G4:G30").Select
Sheets("5").Select
    Range("G30").Select
    Selection.AutoFill Destination:=Range("G4:G30"), Type:=xlFillDefault
    Range("G4:G30").Select
Sheets("6").Select
    Range("G30").Select
    Selection.AutoFill Destination:=Range("G4:G30"), Type:=xlFillDefault
    Range("G4:G30").Select

'etc... sur tous le classeur sauf les 3 dernières feuilles.

End Sub

Ce que j'essaye de remplacer par une boucle :

Code:
Sub test2()
    Dim i%
        For i = 1 To Worksheets.Count - 3
            With Worksheets(i)
            Range("G30").Select
            Selection.AutoFill Destination:=Range("G4:G30"), Type:=xlFillDefault
            Range("G4:G30").Select
            End With
        Next
End Sub

qui boucle toujours sur la même feuille.
Auriez vous un petit conseil pour raccourcir ce code?

Cordialement
 
Re : Copie de cellules sur chaques feuilles du classeur

Bonsoir excelman,

Tu as tout simplement d'attacher la référence de la cellule à la feuille en la faisant précéder d'un point :

Code:
Sub test2()
    Dim i%
        For i = 1 To Worksheets.Count - 3
            With Worksheets(i)
            .Range("G30").Select
            Selection.AutoFill Destination:=.Range("G4:G30"), Type:=xlFillDefault
            .Range("G4:G30").Select
            End With
        Next
End Sub
Cordialement.


Edit : bonsoir JBARBE.
 
Re : Copie de cellules sur chaques feuilles du classeur


Salut Papou Net,

Ben en fait la formule ne fonctionne pas ainsi car j'ai un message qui me dit que "la méthode de classe select range a échoué..."
 
Re : Copie de cellules sur chaques feuilles du classeur

Code:
Sub test2()
    Dim i As Integer
        For i = 1 To 30 ' Nombres de feuilles -3
           Worksheets(i).Select
            Range("G30").Select
            Selection.AutoFill Destination:=Worksheets(i).Range("G4:G30"), Type:=xlFillDefault
        Next i
End Sub

Essai ce code en changeant le nombre 30 de feuilles -3 que tu veux avoir !

Pas possible de faire autrement

PS : Bonsoir Papou-Net
 
Dernière édition:
Re : Copie de cellules sur chaques feuilles du classeur

ben ça ne fonctionne pas non plus. !!!!
Je ne comprends pas car j'ai une autre formule qui change 1 cellule avec le même genre de macro qui fonctionne.
 
Re : Copie de cellules sur chaques feuilles du classeur

RE :

excelman,

En relisant ton code, je relève que tu ne peux sélectionner une cellule sur une feuille qui n'est pas active. Je te propose donc une des deux solutions suivantes :

Code:
Sub test2()
    Dim i%
        For i = 1 To Worksheets.Count - 3
            With Worksheets(i)
            .Select
            .Range("G30").Select
            Selection.AutoFill Destination:=.Range("G4:G30"), Type:=xlFillDefault
            .Range("G4:G30").Select
            End With
        Next
End Sub
Mais la suivante devrait pouvoir aussi fonctionner, car il n'est pas nécessaire de sélectionner feuilles ou cellules pour y écrire dedans :

Code:
Sub test2()
    Dim i%
        For i = 1 To Worksheets.Count - 3
            With Worksheets(i)
            .Range("G30").AutoFill Destination:=.Range("G4:G30"), Type:=xlFillDefault
            End With
        Next
End Sub
Enfin, une autre hypothèse : si les noms de tes feuilles sont bien des chiffres, comme je pense l'avoir compris, alors il faut remplacer l'index i par une chaîne de caractères :

Code:
With Worksheets(Cstr(i))
    .Range("G30").AutoFill Destination:=.Range("G4:G30"), Type:=xlFillDefault
End With
Maintenant, si ça ne résout pas la question, tu peux peut-être joindre ton fichier sans oublier de remplacer les données confidentielles le cas échéant.

Cordialement.
 
Re : Copie de cellules sur chaques feuilles du classeur

Super Papou, la 1ere et la 3eme fonctionnent mais pas la 2eme.
Mais bon je ne vais pas faire le difficile ça fonctionne et c'est le principal.
Merci à tous les deux.
Cordialement
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
XL 2021 listbox
Réponses
18
Affichages
559
Réponses
7
Affichages
362
Réponses
15
Affichages
467
Réponses
3
Affichages
828
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…