Transposez des valeurs de cellules

6classeur1.xlsx (10.06 Ko)

Bonjour,

je voudrais faire ceci, incapable le faire moi-même, merci pour votre aide.

4 colonnes (B C D E) ont des valeurs que je voudrais transposer dans les colonnes F G H I, en fonction des valeurs constantes en ligne 1 (100, 50).

Ex: Pour Pers3, 2 valeurs 16 et 8 (en B4 et E4), correspondantes à la même constante 100 (B1 et E1) > il faudrait les transposer dans les colonnes correspondantes à la constante 100 en F G H I.

Sauf que si F4 est non vide, il ne faut pas remplacer la valeur déjà existante (ici 16) mais plutôt la mettre dans la prochaine colonne constante 100 (donc 8 dans G4).

Idem pour Pers1 et Pers2.

J'espère que j'ai été clair.

Fichier joint en ex.

bonjour,

solution via une macro

Sub test()
    dl = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 2 To dl
        For j = 2 To 5
            If Cells(i, j) <> "" Then
                For k = 6 To 9
                    If Cells(1, j) = Cells(1, k) And Cells(i, k) = "" Then Cells(i, k) = Cells(i, j): Exit For
                Next k
            End If
        Next j
    Next i
End Sub

je n'ai pas besoin de formules en ligne 1, les données sont fixes.

je fournis un autre exemple plus concret en fichier joint.

NB: je suis sous excel starter et je ne peux utiliser de macros.

13classeur1.xlsx (11.60 Ko)

Bonjour,

D'abord tes données ne sont pas fixes en ligne 1 puisqu'elles ne reproduisent pas à l'identique la ligne 1 du tableau initial.

Il faut donc calculer cette nouvelle ligne 1 avec une formule. Là ce n'est pas bien compliqué.

Sur ton premier exemple de 4 colonnes, tableau résultant à partir de K1. Formule en K1 :

[b]=GRANDE.VALEUR($B$1:$E$1;COLONNE(A:A))

[/b]

à tirer sur 4 colonnes.

Petit écart : sur ton grand tableau il y a une colonne non numérique, dont j'ai donc remplacé la valeur par 0.

Si tu tiens à voir apparaître NO, tu as le choix entre 2 solutions :

1) Tu mets comme format de cellule de la ligne 1 : 0;;"NO" et tu verras apparaître NO en tapant 0

2) Tu continues à taper NO et tu insères dans les formules toutes les références à la première ligne dans une fonction N() qui renverra 0 pour une valeur texte.

Deuxième formule, positionnée en K2 sur le petit tableau modèle :

=SIERREUR(INDEX(2:2;PETITE.VALEUR(SI(($B2:$E2<>"")*($B$1:$E$1=K$1);COLONNE($B$1:$E$1));NB.SI($K$1:K$1;K$1)));"")

Celle-ci est matricielle (validation : Ctrl+Maj+Entrée). Elle se tire sur tout le reste du tableau, vers le bas et vers la droite.

Dans ton grand tableau, ton résultat manuel supprime un certain nombre de colonnes qui se trouvaient être vides. La formule ne les supprime pas, elle ne préjuge pas du contenu qui sera éventuellement trouvé sur les lignes suivantes... Si tu veux faire disparaître les colonnes vides, tu les supprimes du tableau initial et elles n'apparaîtront pas au final (tes colonnes NO, vides auraient ainsi pu disparaître aussi).

Bon dimanche.

Ferrand

Merci, je n'ai pas plus qu' à faire un essai

Fantastique, ça marche très bien.

Merci

Rechercher des sujets similaires à "transposez valeurs"