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

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
 

Papou-net

XLDnaute Barbatruc
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.
 

excelman

XLDnaute Occasionnel
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é..."
 

JBARBE

XLDnaute Barbatruc
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:

excelman

XLDnaute Occasionnel
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.
 

Papou-net

XLDnaute Barbatruc
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.
 

excelman

XLDnaute Occasionnel
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
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…