Bonsoir les amis des tableaux !!!
Quelle prise de tête !!!
Bon pour Xavier en First (c'est son fil pov pti gars !!! lol
Tu as l'air de te débrouiller un peu, c'est bien.
Bon alors ta variable "Text1" doit être déclarée "Variant" en Publique Niveau Private Module de ton UserForm.
Pour ce faire (en prime on en met une autre) :
En top de ton Private Module de ton UserForm
Private Text1 As Variant
Private WBCivble As Workbook
(En dehors de toute procédure, en haut, sous "Option Explicit", Option Explicit qui sert à obliger à déclarer les variables)
Bon ensuite ton "CommandButton2_Click()" semble OK, rajoute juste :
Text1 = Application.GetOpenFilename("Tous les Fichiers Excel(*.xls),*.xls", , "A la recherche des fichiers")
If Text1 = False Then Exit Sub
Set WBCible = Workbooks.Open(Text1)
TextBox1.Value = Text1
End Sub
(pour éviter un bug si le User annule, c'est pour ceci que TExt1 est Variant...Boolean ou String, et en même temps on ouvre le WorkBook et on le prend en variable aussi)
OK Numéro 1?
Bon on en arrive au "CommandButton1_Click()"
Don vy que WBCible est déjà déclaré et initialisé.... on est peinard !
Tu supprimes tout ça :
'Là j'aimerai y faire référence au fichier sélectionner précédemment
Set WBCible = Workbooks(Text1)
'Le dataL1 vient du fait que la feuille s'appelle
'toujours comme ca quelque soit le fichier selectionner
NB tu supprimes aussi impérativement la déclaration en début de procédure ( WBCible As Workbook ) car elle va iniber celle déclrée publiquement.....
OK Numéro 2 ?
Si la feuille "dataL1" sera irrémédiablement toujours le nom de la feuille contenue dans le WBCible....... Alors c'est bon, sinon BUG assuré.......On peut aussi référer à l'index de feuille au cas où... :
Set WSCible = WBCible.WorkSheets(1) 'si c'est la première.... dans l'ordre des onglets......
OK Numéro 3 ?
Pour cette partie là :
With CellSource
'là j'avoue que je suis perdu …
'J'aimerais donc écrire dans une cellule de mon fichierprincipal
'le contenu d'une 'cellule (ayant la meme ligne mais pas la meme
'colonne que la CellCible) La colonne serait la E
.Offset(0, 1) = CellCible.Value
.Offset(0, 2) = CellCible.Address
End With
Il te faut comprendre le "OffSet" (Décaler en Fonction FR), c'est une instruction de déplacement primordiale en VBA .....
CellSource étant dans la Colonne "Z"
(NB définie pas toi :
("Z1:Z" & .Range("A65536").End(xlUp).Row) (attention si tu ne travailles pas en tableau prafaitement linéaire "A" pareil que "Z"..... Sinon alors :
("Z1:Z" & .Range("Z65536").End(xlUp).Row)
Donc j'en reviens au OffSet ....... on est en colonne "Z" avec "CellSource " et si j'écris :
CellSource..Offset(0, 1)
celà veut dire que je pars en colonne "AA" en clair :
CellSource(Cellule scannée en "Z").Décalée de 0 Ligne et une Colonne vers la Droite)
Donc si je suis en "Z" et que je veux revenir en "E" je vais écrire :
CellSource.Offset(0, -21)
OK Numéro 4 ?
Voilà si tu es OK sur tous les quatres points, tu viens de faire un grand pas non pas sur la lûne mais dans la planête VBA !!!
Bon pour les questions de Jean-Marie et de Zon je repasserai plus tard car là je viens déjà de faire cramer mes spaguettis avec même la casserole !!! lol
Mais sinon rapidos avant qu'il y ait le feu dans ma cuisine, Jean Marie quand même bien vu pour le "simple" le redim aurait dû être en dehors de la boucle.
Sinon non c'est normal Zéro pour une Dynamic Array, et 1 pour un Tableau Varient de Plage...... Et merci à Zon pour le Transpose, c'était ça "l'astuce" dont je parlais de toi, mais tu n'as pas capté !! ('je crois que Zon a une astuce')...... Je ne voulais par dire "c'est l'astuce de Zon !!!" lol lol... Mais bon tu m'as compris plus bas et c'est ce "bloody" Transpose" que je zappe à chaque fois, le Resize, çà y est, moi y en avoir compris !!! et merci aussi pour l'avertissement de limite à 5700.
Sinon petite coquille dans le correctif interressant du "avancé" pour éviter la première incrémentation de Colonne "0" du "TabDynamicArray" car il faut lire :
TabA(i, 2) = TabB(J, 1) au lieu de :
Tab(A, 2) = TabB(J, 1)
Si on veut essyer de faire tourner ce code..
Bon Appétit avant que les pompiers débarquent (et bonne Soirée)
@+Thierry
PS sacré Post !! lol (sorry)