EXCEL-VBA réorganisation des données

Résolu/Fermé
Signaler
Messages postés
11
Date d'inscription
mercredi 23 mai 2007
Statut
Membre
Dernière intervention
19 février 2008
-
Messages postés
11
Date d'inscription
mercredi 23 mai 2007
Statut
Membre
Dernière intervention
19 février 2008
-
Bonjour, je me tourne à nouveau vers ce forum pour obtenir de l'aide pour la mise en forme du contenu d'une feuille.

Je vais essayer d'être explicite :
- en colonne A : code pièce
- en colonne B : quantité à produire
- en colonne C : couleur
Si une pièce existe en plusieurs couleurs, on a autant de lignes que de couleurs avec un même code pièce en colonne A.
ex :
A : AAAA ; B : 2 ; C : VERT
A : BBBB ; B : 5 ; C : VERT
A : BBBB ; B : 3 ; C : BLEU
A : CCCC ; B : 1 ; C : BLEU

Je dois créer une seconde feuille qui devra se présenter sous la forme suivante :

A : Code ; B : VERT ; C : BLEU
A : AAAA ; B : 2
A : BBBB ; B : 5 ; C : 3
A : CCCC ; C : 1

Attention, ma feuille peut comporter jusqu'à 20 couleurs différentes, et elles n'apparaissent pas toutes systématiquement.

Je vous remercie d'avance pour votre précieuse aide.
Hugues

10 réponses

Salut,
LA fonction s'appelle 'Pivot table' (Ang) dans le menu 'Données'. Il y a un assistant très pratique.

Dans ton tableau d'origine tu prends la col. A pour les têtes de lignes, la col.C pour les colonnes et la col. B pour les valeurs (la fonciton somme est par defaut mais tu peux en faire de ratios etc. )

Tchô
Messages postés
11
Date d'inscription
mercredi 23 mai 2007
Statut
Membre
Dernière intervention
19 février 2008

Merci pour ta réponse rapide.
Apparemment je ne dispose pas de "Pivot table" dans le menu Données. Je dois préciser que je suis sous EXCEL 2003.
Je te remercie de me confirmer si tu disposes d'une version plus récente pour savoir si c'est bien la cause.
A+
moi aussi xls2003 - je suis sur la version ang. et je te donné le térme en Ang. - ca dois se trouver sous la commande 'grouper'.

sinon cherche 'tableau crosséé' en FR
Messages postés
1712
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
16 janvier 2020
540
Très exactement "Rapport de Tableau croisé dynamique". Ca me paraît la bonne piste...
Messages postés
11
Date d'inscription
mercredi 23 mai 2007
Statut
Membre
Dernière intervention
19 février 2008

Merci à vous deux.
C'est en effet le tableau dynamique qu'il me faut. Je connaissais un peu mais je croyais qu'il pouvait exister des fonctions "moins lourdes" alors qu'il n'y a pas plus simple.
Et grâce à Matrix, je connais maintenant le nom anglais du tableau croisé dynamique : pilot taibaul...

J'ai quand même une nouvelle question : en plus du "code pièce", dans champs par lignes, j'ai ajouté les champs "désignation" et "application".
Du coup j'ai des sous-totaux qui ne veulent pas disparaître.
Comment les masquer pour ne garder qu'une ligne par code pièce ?
Messages postés
1712
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
16 janvier 2020
540
Clic droit sur l'entête "Code pièce", paramètres du champ, Sous totaux = aucun
Messages postés
11
Date d'inscription
mercredi 23 mai 2007
Statut
Membre
Dernière intervention
19 février 2008

Salut
Merci, j'ai réussi à cacher les sous-totaux, mais il me reste une ligne vide entre chaque ligne de données. Est-ce que je peux la supprimer également ?
On touche au but...
Messages postés
11
Date d'inscription
mercredi 23 mai 2007
Statut
Membre
Dernière intervention
19 février 2008

Ca marche, grâce à votre aide j'ai pu obtenir le résultat souhaité. Merci bcp.

Mais j'ai une nouvelle requête : j'ai un document sur lequel le nombre de lignes est très variable.
C'est un tableau pour lequel j'applique une mise en forme (bordures et remplissage des cellules) depuis la ligne des titres (ligne 6) jusqu'à la ligne 1000. J'ai donc créé la commande suivante en fin de macro pour supprimer les lignes inutiles :

Dim lign As Long
For lign = 1010 To 7 Step -1

If IsEmpty(Sheets("Listing").Cells(lign, 1)) Then
Sheets("Listing").Cells(lign, 1).EntireRow.Delete
End If
Next

End sub

Cette opération prend bcp de temps. Existe-t-il une meilleure solution ?

Merci d'avance.
Messages postés
1712
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
16 janvier 2020
540
C'est surtout inutile de faire comme ça. Avec la mise en forme conditionnelle, tu peux le faire sans problème.

Tu sélectionnes tes 1000 lignes, tu choisis "mise en forme conditionnelle", tu choisis si la formule est et tu tapes =$A6<>"" et ensuite grâce au bouton Format tu mets tes bordures.
Messages postés
11
Date d'inscription
mercredi 23 mai 2007
Statut
Membre
Dernière intervention
19 février 2008

Pourquoi faire simple... ?

Nickel, ça marche.

Merci pour tous ces renseignements. Fin de la discussion (en attendant de nouvelles questions).

A+