Transformation de tableau Excel

Résolu/Fermé
Flo - 6 juin 2009 à 17:26
 Flo - 7 juin 2009 à 13:56
Bonjour,

Je refais la question pour que cela soit plus lisible.
Sous Excel, j'essaye de transformer de façon automatique le tableau 1 en tableau 2. Est-ce possible et de quelle manière? Merci d'avance. Bonne journée.

TABLEAU 1
NAME	1-Jan-09	2-Jan-09	3-Jan-09	4-Jan-09
name 1	  A	        A	         B	         B
name 2	  B	        A	         B	         B
name 3	  B	        B	         A	         A
name 4	  A	        A	         B	         B
name 5	  A	        A	         A	         B
name 6	  B	        B	         B 	         A
name 7	  B	        B	         A	         A
name 8	  B	        B	         B	         A
name 9	  A	        B	         B	         A
name 10	  A	        A	         B	         B




TABLEAU 2
NAMES	   A	           B
name 1	 1-Jan-09	
name 1	 2-Jan-09	
name 1		          3-Jan-09
name 1		          4-Jan-09
name 2	 2-Jan-09	
name 2		          1-Jan-09
name 2		          3-Jan-09
name 2		          4-Jan-09
etc.		
		
		
		
		
		
		
		
	
A voir également:

6 réponses

Raymond PENTIER Messages postés 58393 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 23 avril 2024 17 096
6 juin 2009 à 18:28
Salut.
Qui dit "manipulation" ou "transformation" dit par conséquent "VBA" et "macro".
Est-ce que tu t'y connais ?

Ceci dit, évite de lancer une nouvelle discussion sur la même question !
0
Salut Raymond,

OK pour la remarque.
Je ne connais pas assez "VBA" et les "macros" pour faire ce genre de manipulation.
Mais avec un coup de main, je pense pouvoir m'en sortir.

As tu une idée?
Merci d'avance.
Florian.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
6 juin 2009 à 19:01
bonjour

Ca fait 2 fois que les orages coupent l'électricité! mais ca y est j'ai réussi à passer entre les éclairs

regarde si cette maquette te convient:
https://www.cjoint.com/?ggs25WlZ7n

le nombre de jour et le nombre de personnes ne sont pas limités
tu te places à l'endroit où tu veux commencer le tableau 2
puis outils-macro-macro -reorganiser

tu peux changer A et B en changeant les valeurs "constante" dans VBA (Alt+F11)

Const mot1 As String = "A"
Const mot2 As String = "B"
tu met tes données à la place de A ou B au cas où
0
Raymond PENTIER Messages postés 58393 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 23 avril 2024 17 096
6 juin 2009 à 19:09
"As tu une idée?" Non, hélas !

Sinon je t'aurais indiqué quelques pistes. Mais je te voulais te dire que sans macro, l'entreprise est risquée et hasardeuse, et les résultats non garantis ...

Ceci dit, quel que soit celui qui acceptera de t'aider, avec ou sans macro, ton exemple me paraît trop simpliste et risque de l'induire en erreur : En effet on en concluerait qu'il y a toujours à chaque ligne le même nombre de colonnes renseignées (tableau 1) donc de lignes groupées (tableau 2), et d'autre part seulement 2 variables (tableau 1) donc 2 colonnes (tableau 2), ce qui est probablement fort loin de la réalité ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
6 juin 2009 à 19:14
ci joint la macro commentée à des fins "didactiques"
(salut Mike31, excuses moi, je ne t'avais pas salué mais avec cette histoire de double-post et la menace de coupure de courant...)

Option Explicit
Const mot1 As String = "A" ' à adapter
Const mot2 As String = "B" 'a adapter

Sub reorganiser()
Dim der_col As Byte, der_lig As Long
Dim nbre As Long
Dim tablo
Dim qui As String, cptr As Long, lig As Long, col As Byte

With Sheets(1)
    'initialisation du tablo
    der_col = .Range("IV1").End(xlToLeft).Column
    der_lig = .Range("A65536").End(xlUp).Row
    nbre = (der_col - 1) * (der_lig - 1)
    ReDim tablo(nbre - 1, 3)
    
    'parcourt les lignes de la  liste des noms
    For lig = 2 To der_lig
    'nom colonne A sur la ligne en cours
    qui = .Cells(lig, 1)
        'parcourt les colonnes de la ligne en cours
        For col = 2 To der_col
            'insère le nom
            tablo(cptr, 0) = qui
            'insère la date
            tablo(cptr, 1) = .Cells(1, col)
            'teste le mot dans la cellule et le range suivant la valeur
            If .Cells(lig, col) = mot1 Then
                tablo(cptr, 2) = mot1
            Else
                tablo(cptr, 3) = mot2
            End If
            'incrémente le compteur du tablo
            cptr = cptr + 1
            Next
        Next
End With
'redimensionne la cellule de destination à la taille  en forme verticale du tablo
Selection.Resize(nbre, 4) = tablo
End Sub

0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
6 juin 2009 à 19:16
bonjour

Ca fait 2 fois que les orages coupent l'électricité! mais ca y est j'ai réussi à passer entre les éclairs

regarde si cette maquette te convient:
https://www.cjoint.com/?ggs25WlZ7n

le nombre de jour et le nombre de personnes ne sont pas limités
tu te places à l'endroit où tu veux commencer le tableau 2
puis outils-macro-macro -reorganiser

tu peux changer A et B en changeant les valeurs "constante" dans VBA (Alt+F11)

Const mot1 As String = "A"
Const mot2 As String = "B"
tu met tes données à la place de A ou B au cas où
0
Bonjour Michel,

C'est parfait. Merci beaucoup.
Bonne journée.
Flo.
0