Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Excel > VBA Excel

Réponse
 
Outils de la discussion
Vieux 09/10/2008, 20h13   #1 (permalink)
Membre habitué
 
Date d'inscription: mars 2008
Messages: 150
Par défaut regroupement par cellule et somme

Bonjour,

J'ai une feuille excel qui contient 4 colonnes et plusieurs lignes. Je souhaite a l'aide d'une macro regrouper plusieurs ligne (qui ont la meme valeur dans la colonne A) et addtionner les autres colonnes sur la meme ligne pour n'obtenir qu'a la fin une seule ligne avec la valeur de colonne A et la valeur de la colonne B et C additionné.

Exemple, voici ce que j'ai au depart :

Projet/Cout/Amortissement/Type
projetA/25$/14$/F
projetA/35$/-32$/F
projetB/15$/25$/F
projetC/54$/15$/D
projetC/12$/10$/D


J'aimerais avoir ceci :

Projet/Cout/Amortissement/Type
projetA/60$/-18$/F
projetB/15$/25$/F
projetC/68$/25$/D

Je reussi a regrouper les colonnes mais je n'arrive pas a afficher une seul valeur pur le meme projet et la somme des autres.

Votre aide est grandement apprécié. Merci !
Mimosa777 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 20h18   #2 (permalink)
Rédacteur/Modérateur
 
Avatar de Pierre Fauconnier
 
Date d'inscription: novembre 2003
Localisation: Theux (Belgique)
Âge: 41
Messages: 3 112
Envoyer un message via Skype™ à Pierre Fauconnier
Par défaut

Bonjour

Y a-t-il une raison particulière à le faire en VBA? Ou est-ce simplement parce que tu ne vois pas d'autre solution?

Car sans VBA, les Tableaux Croisés Dynamiques (TCD) sont l'outil idéal d'Excel pour ce genre d'analyse...
__________________
Pierre Fauconnier
--------------------
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
Pensez au tag

Mon blog sur DVP - Mes petits papiers sur DVP
Je ne peux en aucun cas être tenu pour responsable des conséquences de l'utilisation des codes que je fournis dans le cadre des réponses apportées sur les forums, même s'il s'avérait que ces codes sont erronés ou amènent à des dysfonctionnements, de manière manifeste ou non.
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 20h28   #3 (permalink)
Membre habitué
 
Date d'inscription: mars 2008
Messages: 150
Par défaut

Oui, tu as bien raison mais en ce moment il sont en tableau croisés dynamiques et le but est d'éviter le tableau croisée dynamique (l'usager a de la difficulté a mettre a jour son tableau croisé dynamique a chaque fois que les données générés dans la feuille augmente). Il est obligé manuellement de changer la plage de son tableau croisé dynamique pour tenir compte des nouvelles lignes ajouter dans la feuille qui recupère les donéées de la base.

Par ailleurs, le but est aussi de pouvoir mieux manipuler ce fichier pour d'autres besoins et à l'aide des macros, je trouve cela beaucoup plus flexible a modifier ou ajouter des nouvelles fonctionnalités.

Qu'en penses tu ? Merci
Mimosa777 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 20h41   #4 (permalink)
Rédacteur/Modérateur
 
Avatar de Pierre Fauconnier
 
Date d'inscription: novembre 2003
Localisation: Theux (Belgique)
Âge: 41
Messages: 3 112
Envoyer un message via Skype™ à Pierre Fauconnier
Par défaut

Je pense qu'il y a une solution pour chaque cas...

Si la plage source du TCD augmente, il peut être utile de nommer la plage en la référençant avec la fonction DECALER()...

Une simple macro de mise à jour du TCD à l'activation de la feuille qui le supporte affiche les nouvelles données dans le TCD

Cela me semble plus simple que de tenter de "réinventer la roue" via une macro...
__________________
Pierre Fauconnier
--------------------
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
Pensez au tag

Mon blog sur DVP - Mes petits papiers sur DVP
Je ne peux en aucun cas être tenu pour responsable des conséquences de l'utilisation des codes que je fournis dans le cadre des réponses apportées sur les forums, même s'il s'avérait que ces codes sont erronés ou amènent à des dysfonctionnements, de manière manifeste ou non.
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 20h50   #5 (permalink)
Membre habitué
 
Date d'inscription: mars 2008
Messages: 150
Par défaut

comment utiliser la fonction decaler ? effectivement, si cela fonctionne, c'est deja un grand pas

Merci
Mimosa777 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 20h57   #6 (permalink)
Modératrice
 
Avatar de zazaraignée
 
Date d'inscription: février 2004
Localisation: Rimouski
Messages: 3 067
Par défaut

Heu... Au risque de dire une sottise... Est-ce que la fonction Sous-totaux du menu Données ne serait pas suffisante?
__________________
  • Pour les nouveaux : Mode d'emploi et aide aux nouveaux
  • et impérativement les règles du forum. Histoire de garder une ambiance amicale.
  • Noubliez pas les balises de Code pour vos listings : bouton # de l'éditeur. Et n'oubliez pas non plus de bouton
  • Je ne réponds pas aux questions posées par MP.
zazaraignée est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 21h03   #7 (permalink)
Membre habitué
 
Date d'inscription: mars 2008
Messages: 150
Par défaut

salut,

je comprends pas ton point zazaraignée. Je desire simplement pouvoir mettre a jour le tableau croisse dynamique automatiquement lorsqu'il y a des ajouts dans la feuille qui recupere les données de la base (base essbase en passant)

Si parxemple, ya des nouveaux projets ajoutés, ben que le tableau croisse en tienne compte automatiquement apres une mise a jour.

Voila pourquoi je demande comment faire la macro de mise a jour (decaler) proposé par Pierre Fauconnier.

Merci
Mimosa777 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 21h14   #8 (permalink)
Rédacteur/Modérateur
 
Avatar de Pierre Fauconnier
 
Date d'inscription: novembre 2003
Localisation: Theux (Belgique)
Âge: 41
Messages: 3 112
Envoyer un message via Skype™ à Pierre Fauconnier
Par défaut

En fait, DECALER() renvoie une plage de cellules. L'intérêt est que ses paramètres peuvent être dynamiques et donc modifiés en fonction de la configuration de la feuille



Syntaxe:
Citation:
DECALER(RéfOrigine;LignesDecalage;ColonnesDecalage;[NbreLignes];[NbreColonnes])
Traduction pour l'exemple illustré.

On par de A1 et on décale de 0 lignes et de 0 colonnes pour définir le coin supérieur gauche de la plage renvoyée par DECALER (soit A1). On définit le nombre de lignes en comptant le nombre de valeurs saisies en A et le nombre de colonnes en comptant le nombre d'intitulés placés en ligne 1.

Cela sous-entend qu'il ne faut rien d'autre que le tableau sur la feuille. Il y a moyen de s'affranchir de ces contraintes dans certaines limites, mais cela devient plus complexe.
On mentionne la plage nommé en source du TCD à la deuxième étape de la création...

Après, pour autant qu'à chaque nouvelle saisie, il y ait une valeur en colonne A, la plage va grandir toute seule. De même, si tu ajoutes un champ en colonne E, la plage va s'étendre sur la droite et à la prochaine mise à jour du TCD, tu disposeras du nouveau champ.

Pour mettre le TCD à jour à l'activation de la feuille qui le supporte (je pars du principe que tu n'as que le TCD sur la feuille)
Code :
Private Sub Worksheet_Activate()
    Me.PivotTables(1).RefreshTable
End Sub
 
dans le module de la feuille.

[EDIT] Comme tu parles de données essbase, je suppose qu'elles sont externes. Ne peux-tu pas alors appuyer directement ton TCD sur les données externes (Etape 1, choisir Données externes).

Autre chose: Si tu récupères les données essbase via MSQuery, Excel créé automatiquement une plage nommée qui grandira à chaque mise à jour et qui peut servir de source au TCD à l'étape 2 de l'assistant... Tu peux d'ailleurs renommer cette plage via clic droit puis propriétés sur une des cellules de résultat de MSQuery...
[/EDIT]
__________________
Pierre Fauconnier
--------------------
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
Pensez au tag

Mon blog sur DVP - Mes petits papiers sur DVP
Je ne peux en aucun cas être tenu pour responsable des conséquences de l'utilisation des codes que je fournis dans le cadre des réponses apportées sur les forums, même s'il s'avérait que ces codes sont erronés ou amènent à des dysfonctionnements, de manière manifeste ou non.
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 21h19   #9 (permalink)
Modératrice
 
Avatar de zazaraignée
 
Date d'inscription: février 2004
Localisation: Rimouski
Messages: 3 067
Par défaut

Je me demandais simplement si les sous-totaux n'étaient pas plus simple à utiliser qu'un TCD. Mais vu que la présentation finale diffère totalement (sans vouloir faire de mauvais jeux de mots) de celle du TCD, finalement, ma proposition ne tient pas vraiment debout.
__________________
  • Pour les nouveaux : Mode d'emploi et aide aux nouveaux
  • et impérativement les règles du forum. Histoire de garder une ambiance amicale.
  • Noubliez pas les balises de Code pour vos listings : bouton # de l'éditeur. Et n'oubliez pas non plus de bouton
  • Je ne réponds pas aux questions posées par MP.
zazaraignée est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 21h41   #10 (permalink)
Membre habitué
 
Date d'inscription: mars 2008
Messages: 150
Par défaut

Merci Pierre pour ton aide. en passant c'ext exactement ce que je fais au niveau de essabase. je recupere les donnes via msquery et la source de mon TCD est bel et bien la feuille genere par ce MSQUERY.à

si mon excel est en anglais, connaitrais tu la fonction decaler en anglais en anglais ? je cherche mais je trouve pas

merci infiniment encore pour ton aide (jèessaie cela et je fais un suivi)
Mimosa777 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 21h44   #11 (permalink)
Modératrice
 
Avatar de zazaraignée
 
Date d'inscription: février 2004
Localisation: Rimouski
Messages: 3 067
Par défaut

Enregistre une macro dans laquelle tu utilise cette fonction. L'enregistreur la traduira pour toi.
__________________
  • Pour les nouveaux : Mode d'emploi et aide aux nouveaux
  • et impérativement les règles du forum. Histoire de garder une ambiance amicale.
  • Noubliez pas les balises de Code pour vos listings : bouton # de l'éditeur. Et n'oubliez pas non plus de bouton
  • Je ne réponds pas aux questions posées par MP.
zazaraignée est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 23h09   #12 (permalink)
Membre habitué
 
Date d'inscription: mars 2008
Messages: 150
Par défaut

Merci enormement Pierre pour ton aide.. Je vais finalement rester avec les TCD. En suivant ton sonceil, je reussi a appeler la feuille nomme par ma requete MSQUERY sur mon TCD. et ca marches bien.

Merci infiniment et merci a toi aussi zazaraignee pour ton aide !
Mimosa777 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 10/10/2008, 07h16   #13 (permalink)
Rédacteur/Modérateur
 
Avatar de Pierre Fauconnier
 
Date d'inscription: novembre 2003
Localisation: Theux (Belgique)
Âge: 41
Messages: 3 112
Envoyer un message via Skype™ à Pierre Fauconnier
Par défaut

DECALER = OFFSET
__________________
Pierre Fauconnier
--------------------
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
Pensez au tag

Mon blog sur DVP - Mes petits papiers sur DVP
Je ne peux en aucun cas être tenu pour responsable des conséquences de l'utilisation des codes que je fournis dans le cadre des réponses apportées sur les forums, même s'il s'avérait que ces codes sont erronés ou amènent à des dysfonctionnements, de manière manifeste ou non.
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation
NEWS MS-OFFICEFAQs OFFICETUTORIELS OFFICELIVRES OFFICESOURCES VBAACCESS

Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Excel > VBA Excel

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide