Autres FillAcrossSheets - Bizarrerie

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:

Hasco

XLDnaute Barbatruc
Repose en paix
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 ).

:)
 

Staple1600

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

Discussions similaires

Réponses
3
Affichages
351

Statistiques des forums

Discussions
314 588
Messages
2 110 988
Membres
111 002
dernier inscrit
Lolo73i