Bonjour tout le monde
Merci Ti
, c'est mieux.
jj59, .Range('a1').Resize(UBound(tablo, 2), 3) = Application.Transpose(tablo)
ce code permet de renvoyer la variable tablo sans faire de boucle.
.resize(ligne, colonne) permet de redéfinir une plage, si on connaissait par avance le nombre de ligne de tablo (10 lignes par exemple) on pourrait ecrire : .range('a1').resize(10,3)....
comme on ne connait pas le nombre de lignes on utilise ubound(tablo) qui renvoi la limite supérieur de la variable tablo.
= Application.Transpose(tablo) permet de 'renverser' la variable tablo.
en effet, ton tablo à été remplie en colonne, et nous on veut un affichage en lignes.
pour comprendre la différence teste ce code :
.Range('a1').Resize(3, UBound(tablo, 2)) = tablo
le code peut planter pour plusieurs raisons.
Principalement si il n'y à aucune formule dans le classeur, et donc tablo est vide, pour eviter ceci il suffit de tester la variable X :
If x = 0 Then
MsgBox 'Aucune formule trouvée.'
Exit Sub
End If
For i = 1 To UBound(tablo, 2)
tablo(3, i) = ''' & tablo(3, i)
Next i
With Sheets.Add
.Name = 'formule'
.Range('a1').Resize(UBound(tablo, 2), 3) = Application.Transpose(tablo)
End With
voilà, ouf, j'ai fini
en espérant t'avoir aidé, et n'hésites pas à revenir en cas de problème.
salut