Bonjour Xavier, le Forum,
Ton fichier n'est pas là !
Mais bon, on va essayer tout de même de te faire rentrer le code dans une copie de ton fichier pour ne pas faire de dégâts !
1- Ouvrir l'éditeur vba avec les touches Alt+F11
2- Créer un module : Insertion/Module
3- Faire un copier coller du code ci-dessous
4- Adapter éventuellement les noms des feuilles dans les objets Worksheets('met le bon nom'). Tu remplaces donc dans mon code Feuil1 par le nom de ta feuille de données, et Feuil2 et Feuil3 par les noms des feuilles dans lesquelles les données seront copiées (et oui, il y a deux présentations prévues !).
L'apostrophe dans les code permet de mettre des commentaires qui devraient t'éclairer.
5- Lance la macro (qui s'appelle Xavier) à partir d'Excel par le menu Outils/Macro/Exécuter.
6- Va voir le résultat dans les feuilles où tu as choisi de copier les données.
ça devrait le faire.
A plus.
Voici le code à copier :
Sub Xavier()
Dim colonne As Long
Dim ligne As Long
Dim c As Long, l As Long, i As Long, j As Long
Let c = 2 ' Pour commencer à la colonne 2, 1ère colonne de données
Let l = 2 ' Pour commencer à la ligne 2, 1ère ligne de données
Worksheets('Feuil1').Activate ' Activer la feuille de données
Range('IV1').End(xlToLeft).Select ' Se placer sur la dernière colonne
Let colonne = ActiveCell.Column ' Enregistre le numéro de la dernière colonne
Selection.End(xlDown).Select ' Se placer sur la dernière ligne
Let ligne = ActiveCell.Row ' Enregistre le numéro de la dernière ligne
Range('B2').Select ' Se replacer sur la première donnée
For i = 2 To colonne ' Boucle qui va passer de la 1ère à la dernière colonne de données
For j = 2 To ligne ' Boucle qui passe de ligne en ligne
If Cells(j, i).Value > 0 Then ' Test de la valeur de la cellule : si > 0
With Worksheets('Feuil2') ' Alors je copie les données sur la feuille 2
.Cells(l, 1).Value = Worksheets('Feuil1').Cells(1, i).Value
.Cells(l, 2).Value = Worksheets('Feuil1').Cells(j, 1).Value
.Cells(l, 3).Value = Worksheets('Feuil1').Cells(j, i).Value
End With
' Autre présentation, tu pourra choisir !
With Worksheets('Feuil3') ' Alors je copie les données sur la feuille 2
.Cells(1, c).Value = Worksheets(1).Cells(1, i).Value
.Cells(l, 1).Value = Worksheets(1).Cells(j, 1).Value
.Cells(l, c).Value = Worksheets(1).Cells(j, i).Value
End With
l = l + 1 ' pour que les données soient copiées sur la ligne suivante
c = c + 1 ' pour que les données soient copiées dans la colonne suivante
End If
Next j ' je passe à la ligne suivante jusqu'à la dernière ligne
Next i ' puis je passe à la colonne suivante jusqu'à la dernière
End Sub