Transformation de tableau Excel

Résolu
Flo -  
 Flo -
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.		
		
		
		
		
		
		
		
	

6 réponses

  1. Raymond PENTIER Messages postés 58222 Date d'inscription   Statut Contributeur Dernière intervention   17 487
     
    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
  2. Flo
     
    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
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  4. Raymond PENTIER Messages postés 58222 Date d'inscription   Statut Contributeur Dernière intervention   17 487
     
    "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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  7. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. Flo
       
      Bonjour Michel,

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