Autres FillAcrossSheets - Bizarrerie

  • Initiateur de la discussion Initiateur de la discussion Staple1600
  • Date de début Date de début

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 !

Staple1600

XLDnaute Barbatruc
Bonsoir le forum

Pour faire suite à ce fil, j'ai constaté le "souci" suivant
Seules les deux dernières macros font ce qu'elles sont censées faire
NB: FillAcrossSheets accepte trois paramètres (facultatifs): xlFillWithAll (valeur par défaut), xlFillWithContents et xlFillWithFormats
La macro paramétrée Remplir semble, qu'elle que soit le paramètre indiqué, prendre la valeur par défaut.
Par contre les deux dernières macros font bien le distinguo et produisent le résultat attendu.

Quelqu'un pourrait-il éclairer ma lanterne et m'expliquer le pourquoi du comment ?
VB:
Sub test_A()
Feuil1.Cells.Clear: Feuil2.Cells.Clear: Feuil3.Cells.Clear: Creer_Données_TEST
Dim p As Range
Set p = Worksheets("Feuil1").Range("B5:B26")
Remplir p, xlFillWithContents
End Sub

Sub test_B()
Feuil1.Cells.Clear: Feuil2.Cells.Clear: Feuil3.Cells.Clear: Creer_Données_TEST
Remplir Worksheets("Feuil1").Range("B5:B26"), xlFillWithFormats
End Sub
Private Sub Creer_Données_TEST()
Dim rng As Range
Randomize 1600: Application.ScreenUpdating = False
Feuil1.Cells.Clear: Feuil2.Cells.Clear: Feuil3.Cells.Clear
Worksheets("Feuil1").Cells(5, 2) = "ITEMS": Set rng = Worksheets("Feuil1").Cells(6, 2).Resize(21): rng.Interior.Color = vbMagenta
rng.Value = "=INT((RAND()*NOW())/PI())": rng.Borders.Value = Application.RandBetween(1, 3): rng = rng.Value
End Sub
Private Sub Remplir(vRange As Range, xFill As XlFillWith)
Dim arrWSN
arrWSN = Array("Feuil1", "Feuil2", "Feuil3")
Worksheets(arrWSN).FillAcrossSheets vRange
End Sub

Sub MiseAjourRegistre_C()
Dim arrWSN, F As Worksheet: Set F = Worksheets("Feuil1")
Application.ScreenUpdating = False
Feuil1.Cells.Clear: Feuil2.Cells.Clear: Feuil3.Cells.Clear
F.Range("B5:B26") = "=ROW()": F.Range("B5:B26").Borders.Value = 1: F.Range("B5:B26").Interior.Color = vbCyan
arrWSN = Array("Feuil1", "Feuil2", "Feuil3")
Worksheets(arrWSN).FillAcrossSheets Worksheets("Feuil1").Range("B5:B26"), xlFillWithContents
End Sub

Sub MiseAjourRegistre_D()
Dim arrWSN, F As Worksheet: Set F = Worksheets("Feuil1")
Application.ScreenUpdating = False
Feuil1.Cells.Clear: Feuil2.Cells.Clear: Feuil3.Cells.Clear
F.Range("B5:B26") = "=ROW()": F.Range("B5:B26").Borders.Value = 1: F.Range("B5:B26").Interior.Color = vbCyan
arrWSN = Array("Feuil1", "Feuil2", "Feuil3")
Worksheets(arrWSN).FillAcrossSheets Worksheets("Feuil1").Range("B5:B26"), xlFillWithFormats
End Sub
 
Dernière édition:
Hello l'ami,

arf... arf... arf... je comprends mieux ce que tu me disais dans un autre fil ce matin 🙂

En Fin de macro Remplir, ne manque-t-il pas un paramètre (Type) dans :
VB:
 Worksheets(arrWSN).FillAcrossSheets vRange
Sans doute que avec
Code:
Worksheets(arrWSN).FillAcrossSheets vRange, xFill
ça fonctionnera mieux (tester et approuvé par moi-même personnellement tout seul comme un pas petit)

J'ai mérité que tu m'offres au moinsss 4 citron-verts (s'ils ne datent pas de la DT ).

🙂
 
Bonsoir le fil

Hasco (salutations et merci à ton œil aiguisé 😉)
En attendant de lever nos verres, je laisse le dernier mot à VBA 😉
VB:
Const Ernation As String = "1001000²1100001²1110011²1100011²1101111"
Private Sub Remplir(vRange As Range, xFill As XlFillWith)
Dim arrWSN
arrWSN = Array("Feuil1", "Feuil2", "Feuil3")
Worksheets(arrWSN).FillAcrossSheets vRange, xFill
End Sub
Sub Oups()
Feuil1.Cells.Clear: Feuil2.Cells.Clear: Feuil3.Cells.Clear
limation
Dim monVerre As Range: Set monVerre = Feuil1.Range("B5:B21")
Remplir monVerre, xlFillWithContents
End Sub
Sub O_My_God()
Feuil1.Cells.Clear: Feuil2.Cells.Clear: Feuil3.Cells.Clear
limation
Dim monVerre As Range: Set monVerre = Feuil1.Range("B5:B21")
Remplir monVerre, xlFillWithFormats
End Sub
Sub limation() 'en guise de citron vert ;-)
Dim eek$, kee As Range: Set kee = Feuil1.Range("B5:B21")
AchZo = Split(Ernation, "²")
For k = LBound(AchZo) To UBound(AchZo)
eek = eek & Chr(Application.WorksheetFunction.Bin2Dec(AchZo(k)))
Next
kee.FormulaR1C1 = "=" & Chr(34) & eek & Chr(34) & "&ROW()": kee.Borders.Value = 4: kee.Interior.Color = QBColor(Sqr(196))
End Sub

NB: Je pourrais expliquer les aléas et circonstances de vie qui m'ont amené à cet égarement momentané et cette perte de lucidité VBAistique.
Mais non, j'assume mon erreur en désinstallant Office pour me punir et en utilisant pendant le carême LibreOffice comme tableur.
 
- 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

Réponses
2
Affichages
371
  • Question Question
Réponses
6
Affichages
609
Réponses
2
Affichages
691
Retour