Sub Pour_Test()
Range("A1:E1") = Split("ITEM1/ITEM2/ITEM3/ITEM4/ITEM5", "/")
Range("A2:E20").FormulaR1C1 = "=ROW()-1&""|""&COLUMN()"
Cells(1).CurrentRegion = Cells(1).CurrentRegion.Value
End Sub
Sub Tableaux()
Dim Table_Base
Table_Base = Cells(1).CurrentRegion.Value
X = UBound(Table_Base, 1)
Y = UBound(Table_Base, 2)
MsgBox Table_Base(X, Y)
MsgBox Table_Base(10, 3)
End Sub
'On paramètre le lien vers le fichier de base RNI
Chemin_Base = Chemin_Input & "\Base.xlsm"
'On ouvre la base
Workbooks.Open Chemin_Base, False
Set Wb_Base = Workbooks("Base.xlsm")
Set Ws_Source = Wb_Base.Worksheets("BASE")
je débute et je reprends juste un code que j'essaye de comprendre, :-( c'est donc difficile pour moi de comprendre ce qu'on peut ou ne peut pas faire voire mettre en pièce ou pas. merci de vos conseils en attendantRe
@Yli
Pour info
On ne joint jamais le fichier original dans son jus
Mais un fichier exemple simplifié créé pour illustrer la question
Car là déjà, ca va coincer pour nous répondeurs
Enrichi (BBcode):'On paramètre le lien vers le fichier de base RNI Chemin_Base = Chemin_Input & "\Base.xlsm" 'On ouvre la base Workbooks.Open Chemin_Base, False Set Wb_Base = Workbooks("Base.xlsm") Set Ws_Source = Wb_Base.Worksheets("BASE")
NB: Tu as essayé mon exemple ? (sur un classeur vierge)
Qui illustre un moyen plus simple de mettre des données dans un Array
oui en effet il y a un fichiers source qui comprend 3900 ligne et 52 col et c'est ce fichier source ou si j'ajoute des lignes et que je fais tourner la macro cette dernière m'indique le message d'erreur cité en jaune plus hautRe
Le fichier demande d'avoir un autre Fichier donc pas evident de tester sous cette Forme
Mais j'avais comme JM Fait ce test :
Bonne journéeVB:Sub test() 'On déclare les Variables Dim Ws_Source As Worksheet Dim Lgn As Integer Dim Col As Byte Dim Table_Base() Dim PosLiFin_Source As Integer Dim PosCoFin_Source As Integer Set Ws_Source = Worksheets("Feuil1") 'on définit la feuille Source PosLiFin_Source = Ws_Source.Cells(1, 1).End(xlDown).Row 'On détermine la dernière Ligne Non vide du tableau en partant du Haut PosCoFin_Source = Ws_Source.Cells(1, 1).End(xlToRight).Column ''On détermine la dernière colonne Non vide du tableau en partant de la Gauche ReDim Table_Base(1 To PosLiFin_Source, 1 To PosCoFin_Source) 'On dimensionne le tableau For Lgn = 1 To PosLiFin_Source 'pour chaque ligne de la plage For Col = 1 To PosCoFin_Source 'pour chaque Colonne de la plage Table_Base(Lgn, Col) = Ws_Source.Cells(Lgn, Col) 'On colle les données de la cellule ainsi définie Next Next 'pour le test on colle les données du tableau Worksheets("Feuil1").Cells(1, 6).Resize(UBound(Table_Base), UBound(Table_Base, 2)) = Table_Base End Sub
Jean marie
Merci je vais y regarder rapidementRe
Le fichier demande d'avoir un autre Fichier donc pas evident de tester sous cette Forme
Mais j'avais comme JM Fait ce test :
Bonne journéeVB:Sub test() 'On déclare les Variables Dim Ws_Source As Worksheet Dim Lgn As Integer Dim Col As Byte Dim Table_Base() Dim PosLiFin_Source As Integer Dim PosCoFin_Source As Integer Set Ws_Source = Worksheets("Feuil1") 'on définit la feuille Source PosLiFin_Source = Ws_Source.Cells(1, 1).End(xlDown).Row 'On détermine la dernière Ligne Non vide du tableau en partant du Haut PosCoFin_Source = Ws_Source.Cells(1, 1).End(xlToRight).Column ''On détermine la dernière colonne Non vide du tableau en partant de la Gauche ReDim Table_Base(1 To PosLiFin_Source, 1 To PosCoFin_Source) 'On dimensionne le tableau For Lgn = 1 To PosLiFin_Source 'pour chaque ligne de la plage For Col = 1 To PosCoFin_Source 'pour chaque Colonne de la plage Table_Base(Lgn, Col) = Ws_Source.Cells(Lgn, Col) 'On colle les données de la cellule ainsi définie Next Next 'pour le test on colle les données du tableau Worksheets("Feuil1").Cells(1, 6).Resize(UBound(Table_Base), UBound(Table_Base, 2)) = Table_Base End Sub
Jean marie