SOLUTION pour transformation de tableau

Bonjour,
j’ai en ligne 2 des numéros de projet, un nombre de référence, des dates de jalon et un chargé de projet. Cela représente 10 colonnes.

Comment je fais pour avoir ces informations en colonnes et non en ligne. A savoir que le copier/coller-transposer ne fonctionne pas.

Exemple dans le doc excel en PJ

merci pour votre aidEESSAI PROJET.xlsx (11,5 Ko)

Bonjour

Ci-joint ma proposition en VBA

Onglet « Sheet1 » les données
J’ai rajouté un onglet « Résultat » pour les mettre en colonne
Ainsi tu peux onglet « Sheet1 » mettre autant de Jalon que tu veux en colonne et autant de Code Projet que tu veux en ligne
Toutes les informations seront rapportés en colonne onglet « Résultat »

Cliques onglet « Sheet1 » sur le bouton « Traitement » et vérifies la présentation obtenu onglet « Résultat »
Ne pas supprimer les entêtes de colonne onglet « Résultat »
Ce fichier fonctionnant avec du code est de type xlsm
A conserver impérativement

Testes et dis moi

ESSAI PROJET.xlsm (22,4 Ko)

Bonjour,
Bonjour FFO
Ma proposition
ESSAI PROJET.xlsm (23,6 Ko)

C’est super merci à vous 2.

@mimimathy, peux-tu m’expliquer comment tu as réalisé la macro stp ? Tu affiches les résultats à partir de la ligne 9 et colonne B. Comment je fais pour avoir ce meme tabeau mais en L2 stp?

Sub Test()

Dim i%, j%, Dl%, Dc%, lig%, col%
Dim Ws As Worksheet
Set Ws = Sheets(« Sheet1 »)
Dl = Ws.Range(« A » & Rows.Count).End(xlUp).Row
Dc = Ws.Cells(1, Columns.Count).End(xlToLeft).Column - 1
lig = 9
For i = 2 To Dl
col = 2
For j = 3 To Dc
Cells(lig, col) = Cells(i, 1)
Cells(lig, col + 1) = Cells(1, j)
Cells(lig, col + 2) = Cells(i, j)
Cells(lig, col + 3) = Cells(i, Dc + 1)
Cells(lig, col + 4) = Cells(i, 2)
lig = lig + 1
Next j
Next i
End Sub

Re,
Avec commentaires

Sub Test()
  '*  DECLARATIONS DES VARIABLES  *
  Dim i%, j%, Dl%, Dc%, lig%, col%
  Dim Ws As Worksheet
  
  '* INITIALISATION DES VARIABLES *
  Set Ws = Sheets("Sheet1") 'Ws sera le nom de la feuille
  Dl = Ws.Range("A" & Rows.Count).End(xlUp).Row 'Dernière ligne remplie de la colonne A
  Dc = Ws.Cells(1, Columns.Count).End(xlToLeft).Column - 1 'Dernière colonne remplie de la ligne 1 moins 1 ("Chargé de projet ...")
  lig = 9 'N° de la ligne sur laquelle je reproduit les données
  
  For i = 2 To Dl 'Je boucle sur les lignes allant de la ligne 2 à la dernière (DL)
    col = 2 'N° de la colonne sur laquelle je reproduit les données
    For j = 3 To Dc 'Je boucle sur les colonnes allant de la colonne 3 à l'avant dernière (DC)
      Cells(lig, col) = Cells(i, 1) 'la cellule (lig,col) soit cellule B9 = cellule (i,1) soit cellule (A2)
      Cells(lig, col + 1) = Cells(1, j) 'Idem, juste à remplacer les variables par les valeurs pour la compréhension
      Cells(lig, col + 2) = Cells(i, j)
      Cells(lig, col + 3) = Cells(i, Dc + 1)
      Cells(lig, col + 4) = Cells(i, 2)
      lig = lig + 1 'je descend d'une ligne
    Next j 'la prochaine valeur de j sera augmentée de 1 jusqu'à Dc
  Next i 'la prochaine valeur de i sera augmentée de 1 jusqu'à Dl
End Sub

Bonjour, désolé pour le délai de réponse.
Merci Mimimathy pour tes explications. J’ai pu déplacer mon tableau avec la transposition
lig = 2
col = 12
mais mes données ne se transposent pas bien ?
ESSAI PROJET (1) - Copie.xlsm (19,5 Ko)
Peux-tu regarder le fichier stp ?

merci :slight_smile:

Bonjour,
Si au départ les colonnes pour reproduire la macro ne sont pas au même emplacement, c’est normal
ESSAI PROJET (1) - Copie.xlsm (22,4 Ko)

1 « J'aime »

Hello,

Figure-toi que le copier-coller Transpose n’est pas actif car il semble que tes données proviennent d’une page web.
En faisait en premier un copier-coller sur place avec l’option « Respecter la mise en forme de destination », la transposition est devenue disponible
Et en deux clics, le pb me semble résolu… non ?

Pas besoin d’intégrer de code VBA pour cela…!

Enfin, si tu as une version récente d’Excel (avec abonnement), tu as désormais la fonction TRANSPOSE() qui permet de le faire automatiquement avec une fonction native !

Qu’en penses-tu ?

Bonjour Charles, j’ai essayer de 1000 façons différentes avec un copier/coller transpose, mais les données ne se mettent pas dans l’ordre que je souhaite.

Merci mimimathy, tu viens de résoudre mon probleme que j’ai depuis plus de 2 semaines

merci encore

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.