Création d'un tableau avec les années comme répétitions

Bonjour,

j'aimerais faire une macro excel pour réaliser la manipulation suivante (mon fichier contient beaucoup plus de lignes et colonnes, ici c'est un exemple):

J'ai mis un fichier "exemple" en PJ, colones A à D = le tableau initial et colones G à I, le tableau que j'aimerais obtenir.

J'aimerais ajouter une colonne "année" à droite de la colonne variété et reporter les valeurs de rendement pour chaque année afin d'avoir à la fin 3 colonnes: variété , puis une colonne année puis une colonne rendement. Donc les variétés se répétent pour les différentes années.

A la main c'est beaucoup trop long et je me suis dit qu'une macro pourrait faire ça.

Quelq'un pourrait m'aider SVP? Le maximum de détails sont les bienvenus car je suis vraiment débutante.

7exemple.xlsx (8.34 Ko)

Merci par avance pour votre aide.

Bien à vous,

Margot.

Bonjour,

C'est réalisable par le biais d'une macro, de PowerQuery mais également par formule. Un exemple pour la partie formule (respectivement en G2, H2 et I2) :

=DECALER($A$3;MOD(LIGNE()-2;3);0)
=DECALER($B$2;0;ENT((LIGNE()-2)/3))
=DECALER($B$2;ENT((LIGNE()-2)/3)+1;MOD(LIGNE()-2;3))

Le fichier :

10exemple-1.xlsx (8.88 Ko)

bonjour,

Une solution macro :

Sub galopin()
Dim rng As Range, iR%, iC%, iRC%, Arr
Set rng = Range("A2:D" & Range("A" & Rows.Count).End(xlUp).Row)
Arr = rng.Value
iRC = 2
For iR = 2 To UBound(Arr)
   For iC = 1 To UBound(Arr, 2) - 1
      Cells(iRC, 7) = Arr(iR, 1)
      Cells(iRC, 8) = Arr(1, iC + 1)
      Cells(iRC, 9) = Arr(iR, iC + 1)
      iRC = iRC + 1
   Next
Next
End Sub

A+

Bonjour,

merci à tous les 2, ça fonctionne par la formule et par la macro, c'est super et ça va beaucoup me simplifier la vie

Comment puis-je faire pour faire aller mon tableau voulu sur un autre feuillet plutôt que sur le même feuillet que le tableau initial?

Merci par avance.

Bonne soirée,

Margot.

Sub galopin()
Dim rng As Range, iR%, iC%, iRC%, Arr
Set rng = Range("A2:D" & Range("A" & Rows.Count).End(xlUp).Row)
Arr = rng.Value
With Worksheets("blabla")
iRC = 2
For iR = 2 To UBound(Arr)
   For iC = 1 To UBound(Arr, 2) - 1
      .Cells(iRC, 1) = Arr(iR, 1)
      .Cells(iRC, 2) = Arr(1, iC + 1)
      .Cells(iRC, 3) = Arr(iR, iC + 1)
      iRC = iRC + 1
   Next
Next
End With
End Sub

A+

C'est génial, merci, si je peux abuser et demander si j'ai des cases vides, comment les remplacer par "NA"?

bonjour,

Set rng = Range("A2:D" & Range("A" & Rows.Count).End(xlUp).Row)
rng.Replace What:="", Replacement:="NA" '<=ligne à insérer
Arr = rng.Value
'le reste sans changement

A+

C'est parfait,

merci pour tout.

Margot.

Rechercher des sujets similaires à "creation tableau annees comme repetitions"