Salut Couette,
ci joint un fichier avec un gros bouton lançant la macro.
Ci dessous le code utilisé
Le principe de la macro est le suivant:
1 : récupérer le nombre de colonnes et de lignes à traiter
2 : vérifier (par ligne) pour chacune des cellules de cette matrice si elle contient quelque chose. Si c'est le cas, elle le copie dans la première colonne de la ligne en cours.
ça fonctionne mais c'est encore perfectible : il faidrait que Visual Basic calcule tout seul ne nombre de lignes et de colonnes à traiter.
c'est du genre range('A1:' & range(A1).end(xltoright)
mais je n'ai pas réussi...
Code :
Sub Recuperer_donnee2()
Dim i As Range
Dim maxlign, lign, col As Integer
col = InputBox('Donner le nombre de colonnes maximum à traiter', 'Colonnes', '18', vbOKOnly)
maxlign = InputBox('Donner le nombre de lignes maximum à traiter', 'Lignes', '10000', vbOKOnly)
Range('A1').Select
Range(Cells(1, 1), Cells(maxlign, 1)).Select 'Réinitialiser le projet
Selection.ClearContents
Range('A1').Select
For lign = 1 To maxlign ' de la première ligne à la 10000ème
For Each i In Range(Cells(lign, 1), Cells(lign, col))
If i.Value <> '' Then Cells(lign, 1) = i.Value
Next i
Next lign
End Sub
Enfin, pour faire simple : la macro (alt+F11 puis double clic sur modules) et le bouton peuvent être copiés dans une autre classeur; ça fonctionnera.
A+
[file name=selectdonnee.zip size=9566]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/selectdonnee.zip[/file]