Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/01/2012, 23h24   #1
Invité de passage
 
Homme
Ingénieur développement logiciels
Inscription : avril 2011
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : avril 2011
Messages : 11
Points : 0
Points : 0
Par défaut Modifier directement des valeurs dans un TCD

Bonjour,

J'aimerais savoir s'il est possible de modifier directement un Tableau Croisé Dynamique.
Je m'explique : quand on essaye de modifier des cellules d'un TCD, Excel nous renvoie le message suivant : "Impossible de modifier cette partie du TCD".

J'aimerais pourtant donner la possibilité à l'utilisateur de modifier certaines cellules de la source du TCD, directement dans le TCD lui-même.

Savez vous si cela est possible, et s'il faut passer par de la programmation ?

Merci beaucoup pour votre aide
Lisarien est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 21/01/2012, 10h26   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

C'est comme si tu modifiais le résultat d'une formule...

Citation:
J'aimerais pourtant donner la possibilité à l'utilisateur de modifier certaines cellules de la source du TCD, directement dans le TCD lui-même.
Comment pourrais-tu savoir quelles cellules source modifier ? Peux-tu donner un exemple de ce que tu veux faire ?
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 12h30   #3
Invité de passage
 
Homme
Ingénieur développement logiciels
Inscription : avril 2011
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : avril 2011
Messages : 11
Points : 0
Points : 0
Bonjour,

Je comprends ta remarque puisque dans la logique d'un TCD, une cellule peut être la somme de plusieurs ligne du tableau source.
Dans mon cas précis, une cellule du TCD fait référence à une seule cellule de la source.
Mon TCD possède en effet 2 étiquettes de lignes Nom et Référence, et un couple de valeurs (Nom, Référence) est toujours unique.
Par conséquent, en sélectionnant une valeur dans une cellule du TCD, je fais finalement référence à une seule cellule de la source.
Donc à ce moment là, ne pourrais-je pas soit éditer la cellule directement dans le TCD, ou alors afficher une boite de dialogue permettant de modifier la source et recalculer le TCD automatiquement ?

En espérant que je ne t'ai pas trop embrouillé.
Merci
Lisarien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 13h04   #4
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Dans ce cas, c'est peut-être possible. Peux-tu poster un classeur exemple ?
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 15h11   #5
Invité de passage
 
Homme
Ingénieur développement logiciels
Inscription : avril 2011
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : avril 2011
Messages : 11
Points : 0
Points : 0
Voici l'exemple en question.

Concrètement, je souhaiterais que si on clique sur la cellule C10 du TCD, on puisse changer la valeur de 219 à 315, par exemple sans aller dans l'onglet Source. Évidemment l'onglet Source doit être mis à jour automatiquement, en faisant cela.
Fichiers attachés
Type de fichier : xlsx TCD_Sample.xlsx (63,3 Ko, 6 affichages)
Lisarien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 18h34   #6
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Il faut enregistrer ton classeur au format xlsm (classeur supportant les macros). Dans le module de la feuille "TCD" colle la macro suivante :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Cancel = True
    If Intersect(Target, Sheets("TCD").PivotTables(1).DataBodyRange) Is Nothing Then Exit Sub
    If Target.Value = "" Then Exit Sub
    ligne = Columns(Target.Column).Find("", Target, xlValues, xlWhole, xlByRows, xlPrevious).Row
    nom = Cells(ligne, 1)
    ref = Cells(Target.Row, 1)
    With Sheets("Source")
        valeur = InputBox("Entrez la nouvelle valeur")
        If Not IsNumeric(valeur) Then Exit Sub
        .Cells(1, 12).ClearContents
        .Cells(1, 12).Formula = "=sumproduct((A1:A1000=""" & nom & """)*(C1:C1000=""" & ref & """)*row(A1:A1000))"
        lig = .Cells(1, 12)
        col = Target.Column + 3
        .Cells(lig, col) = CDbl(valeur)
    End With
    ThisWorkbook.RefreshAll
End Sub
Lorsque tu fais un double clic sur un champ de valeur du TCD, la macro te demande la valeur à affecter à cet endroit et affectue la modif.
PS. Si tu n'es pas à l'aise avec les macros, dis-le, je te donnerai de plus amples informations et je renverrai le classeur modifié.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/01/2012, 12h48   #7
Invité de passage
 
Homme
Ingénieur développement logiciels
Inscription : avril 2011
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : avril 2011
Messages : 11
Points : 0
Points : 0
Merci beaucoup, cela fonctionne parfaitement. Super travail.

Histoire de pousser la réflexion un peu plus loin, et sans te demander de le faire non plus, penses tu qu'il soit possible d'éditer la cellule directement ou d'après toi faut-il nécessairement passer par une boite de dialogue ?
Lisarien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 13h03   #8
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
A mon avis, c'est impossible.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/01/2012, 13h49   #9
Membre émérite
 
Conseil + Formation
Inscription : février 2010
Messages : 596
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Conseil + Formation

Informations forums :
Inscription : février 2010
Messages : 596
Points : 900
Points : 900
Bonjour

Pour confirmer la réponse de Daniel que je salue, le TCD est superposé à la feuille Excel mais ce sont deux objets distincts.
En réalité les données sont stockées ailleurs, dans une sorte de cube non visible et donc non éditable.

Par ailleurs ton cas est un cas particulier car la vocation du TCD est l'analyse statistique et on a donc rarement un TCD dont chaque donnée reflète la source.
78chris est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/01/2012, 08h26   #10
Invité de passage
 
Homme
Ingénieur développement logiciels
Inscription : avril 2011
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : avril 2011
Messages : 11
Points : 0
Points : 0
Ok, merci beaucoup pour votre aide.

Je vais m'inspirer de cette solution pour faire ce qu'on me demande.

A bientôt et bonne journée
Lisarien est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h06.


 
 
 
 
Partenaires

Hébergement Web