OVH Cloud OVH Cloud

Modifier un TCD

23 réponses
Avatar
Stessels
Je m'efforce, sans succ=E8s, d'appliquer un champ dynamique
sur la liste-source d'un TCD EXISTANT.
Quelle que soit la manoeuvre, Excel me r=E9pond obstin=E9ment :
"Le nom du champ dynamique n'est pas valide.
Pour cr=E9er un tableau crois=E9 dynamique, vous devez utiliser
des donn=E9es sous forme de liste avec des =E9tiquettes de
colonnes. Si vous changez le nom d'un champ dynamique, il
vous faut taper un nouveau nom pour le champ "
Ceci, entre nous, ne veut rien dire... Je veux bien taper
n'importe quoi, mais je ne comprends pas bien !!

Existe-t-il une solution pour recr=E9er le TCD sans =EAtre
oblig=E9 de recommencer depuis le d=E9but le long et minutieux
processus de cr=E9ation de la liste

10 réponses

1 2 3
Avatar
Céline Brien
Bonjour,
Un onglet de données doit servir UNIQUEMENT pour les données.
Il est impératif d'utiliser un onglet à part pour les listes ou autres
informations.
Voici la formule pour créer un champ dynamique pour une liste :
ÞCALER(Listes!$A$2;;;NBVAL(Listes!$A:$A)-1)
Tu veux obtenir une mise à jour auto du TCD à l'ouverture du classeur ?
C'est dans Options du tableau, Actualiser à l'ouverture.
Céline

"Stessels" a écrit dans le message de news:
061001c37063$e9fe3490$
J'ai finalement pu résoudre le problème...

J'utilisais, en effet, une formule "générique", conforme à
celle proposée par Céline Brien

ÞCALER(Data!$A$1;0;0;NBVAL(Data!$A:$A);NBVAL(Data!$1:$1))

Il m'a suffit de "personnaliser" la formule en tapant
NBVAL(Data!$A$1:$K$1) pour qu'Excel se comporte à nouveau
de manière civilisée et accepte docilement la plage
auto-dimensionnable lors de la création du TCD
J'en ai conclu que ce sont les" zones de listes", attachées
aux étiquettes de colonnes et stockées à droite de la
liste-source proprement dite qui étaient responsables du
dysfonctionnement de la formule, d'où l'importance de
toujours les positionner avec soin...
Merci de votre aide
En ce qui concerne la programmation destinée à automatiser
l'actualisation, je pensais recourir à une solution plus
simple pour déclencher la procédure "RefreshTable" (
évènement "Activate" sur une ou plusieurs feuilles du
classeur autres que la liste-source, ou une macro
auto-exécutable à l'ouverture du classeur)
Qu'en pensez-vous ?

-----Message d'origine-----
Pas grand chose à ajouter à ce qui a été dit sur la façon
de nommer

dynamiquement la plage du tableau si ce n'est (comme tu as
précisé le nombre de

champs) la plage :
ÞCALER($A$1;;;NBVAL($A$1:$A$2000);NBVAL($A$1:$K$1))
(Etiquettes de colonnes en ligne 1)

Par contre, si tu veux la mise à jour auto du TCD, il faut
passer par une proc

évènementielle (xl2000)
Exemple avec tes données en A1:Kx et mise à jour du TCD si
les 11 champs sont

renseignés (à adapter ?) :
Dans le module de la feuille :

Private Sub Worksheet_Change(ByVal zz As Range)
x = zz.Column: y = zz.Row: If x > 11 Then Exit Sub
If Application.CountA(Range(zz.Offset(0, -x + 1).Address &
":K" & y)) = 11 Then

_
ActiveSheet.PivotTables("LeNomDuTCD").RefreshTable
End Sub

AV

"Stessels" a écrit dans le message
news:

009f01c36ff4$09e2d5b0$
Il s'agit d'une appli de gestion assez complexe et
parfaitement au point, mais qui exige une actualisation
"manuelle" à chaque nouvelle entrée de données, étant donné
qu'une liste auto-dimensionnable n'a pas été établie lors
de la conception. L'opération qqui n"exige guère que
quelques secondes n'est pas très gênante. Ma démarche
actuelle (histoire de peaufiner...),tente néanmoins de
transformer l'application pour rendre ce processus
entièrement automatique.
La liste comporte 11 colonnes, (dont la dernière est
calculée) et il ne me semble pas qu'Excel puisse confondre
deux colonnes au cours du recalcul. Les noms sont les
suivants ; Date, Libellé, Imputation Dépenses, Recettes,
Type, N° Chèque, Emetteur, Catégorie, N° pièce, Mois

-----Message d'origine-----
J'ai essayé ta procédure, mais je n'arrives pas à
reproduire le problème.


Question, quels sont les noms de colonnes de ta base de
données ?


--
Gaetan Mourmant
www.polykromy.com
Consultation - Formation
Excel - Data mining

"Stessels" a écrit dans le message
de news:

066101c36fe0$051eae00$
La procédure est effectivement valable lorsque l'on crée le
TCD "from scratch" - dans la foulée, au départ d'une
liste-source auto-dimensionnable. Elle ne marche plus
lorsque le TCD a été créé au départ d'une liste non
auto-dimmensionnable, c'est à dire unne liste où la plage
"Data" n'existe pas encore.
Je persiste donc et je signe...
Merci quand même...

-----Message d'origine-----
Salut,

Pour redéfinir la plage source une fois le TCD créé:

Tu cliques droit sur ton TCD. Tu choisis l'assistant
(Wizard en anglais).

Sur le premier panel, tu cliques sur "Précédent" (back en
anglais).

Le panel est désormais celui de la sélection de la plage.
Tu donnes la plage ÚTA
Tu cliques sur Terminer.

Salutations,

Daniel M.

"Stessels" wrote in message
news:063901c36fcd$d4288530$
Merci de votre réponse.
C'est effectivement la formule pour créer une liste-source
auto-redimensionnable... Cela marche très bien lorsque l'on
crée le TCD dans la foulée, mais cela ne marche
malheureusement plus lorsque la liste-source a déjà servi à
créer un TCD - soit AVANT que soit définie la plage
"Data"...



C'est tout mon problème, sans doute un problème de cache
interne à effacer ??

-----Message d'origine-----
Bonjour,
Titres des colonnes sur ligne 1
Aucune cellule vide dans les données de la colonne A
Menu Insertion, Nom, Définir.
Zone Noms dans le classeur : Data
Fait référence à :
ÞCALER(Data!$A$1;0;0;NBVAL(Data!$A:$A);NBVAL(Data!$1:$1))
Céline

"Stessels" a écrit dans le message
de news:

06de01c36fbe$4be082e0$
Je m'efforce, sans succès, d'appliquer un champ dynamique
sur la liste-source d'un TCD EXISTANT.
Quelle que soit la manoeuvre, Excel me répond obstinément :
"Le nom du champ dynamique n'est pas valide.
Pour créer un tableau croisé dynamique, vous devez utiliser
des données sous forme de liste avec des étiquettes de
colonnes. Si vous changez le nom d'un champ dynamique, il
vous faut taper un nouveau nom pour le champ "
Ceci, entre nous, ne veut rien dire... Je veux bien taper
n'importe quoi, mais je ne comprends pas bien !!

Existe-t-il une solution pour recréer le TCD sans être
obligé de recommencer depuis le début le long et minutieux
processus de création de la liste


.



.




.




.






Avatar
Daniel.M
Salut Céline,

Lors d'un changement/ajout de valeur dans une des 11 premières colonnes de
la feuille et lorsque la ligne sur laquelle le changement a lieu a été
complètement renseignée (i.e. 1 entrée détectée sur les 11 premières
colonnes de ladite ligne, d'où le CountA).

Range(zz.Offset(0, -x + 1).Address & ":K" & y)
aurait pu être écrit:
Cells(y,1).Resize(1,11)

Mais c'est juste pour provoquer l'auteur de ladite proc et lire son
onomatopée favorite. :-)

Salutations,

Daniel M.

"Céline Brien" wrote in message
news:%
Salut Alain,
Ta procédure événementielle, elle met à jour auto le TCD lors de l'ajout
d'une nouvelle ligne ? De l'ajout d'une colonne ? Un ou l'autre ?
Merci,
Céline


Dans le module de la feuille :

Private Sub Worksheet_Change(ByVal zz As Range)
x = zz.Column: y = zz.Row: If x > 11 Then Exit Sub
If Application.CountA(Range(zz.Offset(0, -x + 1).Address & ":K" & y))
= 11 Then

_
ActiveSheet.PivotTables("LeNomDuTCD").RefreshTable
End Sub

AV





Avatar
AV
En ce qui concerne la programmation destinée à automatiser
l'actualisation, je pensais recourir à une solution plus
simple pour déclencher la procédure "RefreshTable" (
évènement "Activate" sur une ou plusieurs feuilles du
classeur autres que la liste-source, ou une macro
auto-exécutable à l'ouverture du classeur)
Qu'en pensez-vous ?


Il me semble que la logique voudrait que l'actualisation se fasse à l'ajout d'un
nouvel enregistrement mais on fait ce que l'on veut en la matière....
A voir aussi si la saisie se fait directement dans la base (c'était mon
hypothèse) ou par l'intermédiaire "d'autre chose'

AV

Avatar
Céline Brien
Bonjour,
Si une ou plusieurs colonnes d'une liste de données comportent des
formules, j'utilise une macro pour ajouter une ligne et copier les
formules. Les formats sont aussi copiés par la même occasion.
Céline
--------------------------------------
Sub AjoutLigne()
'
' AjoutLigne Macro
' Macro enregistrée le 28 avril 2003 par Céline Brien
'
' Touche de raccourci du clavier: Ctrl+Maj+L
'
'
Rows("3:3").Select
Selection.Copy
Range("A3").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.EntireRow.SpecialCells(xlCellTypeConstants).ClearContents
End Sub

"Stessels" a écrit dans le message de news:
009f01c36ff4$09e2d5b0$
Il s'agit d'une appli de gestion assez complexe et
parfaitement au point, mais qui exige une actualisation
"manuelle" à chaque nouvelle entrée de données, étant donné
qu'une liste auto-dimensionnable n'a pas été établie lors
de la conception. L'opération qqui n"exige guère que
quelques secondes n'est pas très gênante. Ma démarche
actuelle (histoire de peaufiner...),tente néanmoins de
transformer l'application pour rendre ce processus
entièrement automatique.
La liste comporte 11 colonnes, (dont la dernière est
calculée) et il ne me semble pas qu'Excel puisse confondre
deux colonnes au cours du recalcul. Les noms sont les
suivants ; Date, Libellé, Imputation Dépenses, Recettes,
Type, N° Chèque, Emetteur, Catégorie, N° pièce, Mois

-----Message d'origine-----
J'ai essayé ta procédure, mais je n'arrives pas à
reproduire le problème.


Question, quels sont les noms de colonnes de ta base de
données ?


--
Gaetan Mourmant
www.polykromy.com
Consultation - Formation
Excel - Data mining

"Stessels" a écrit dans le message
de news:

066101c36fe0$051eae00$
La procédure est effectivement valable lorsque l'on crée le
TCD "from scratch" - dans la foulée, au départ d'une
liste-source auto-dimensionnable. Elle ne marche plus
lorsque le TCD a été créé au départ d'une liste non
auto-dimmensionnable, c'est à dire unne liste où la plage
"Data" n'existe pas encore.
Je persiste donc et je signe...
Merci quand même...

-----Message d'origine-----
Salut,

Pour redéfinir la plage source une fois le TCD créé:

Tu cliques droit sur ton TCD. Tu choisis l'assistant
(Wizard en anglais).

Sur le premier panel, tu cliques sur "Précédent" (back en
anglais).

Le panel est désormais celui de la sélection de la plage.
Tu donnes la plage ÚTA
Tu cliques sur Terminer.

Salutations,

Daniel M.

"Stessels" wrote in message
news:063901c36fcd$d4288530$
Merci de votre réponse.
C'est effectivement la formule pour créer une liste-source
auto-redimensionnable... Cela marche très bien lorsque l'on
crée le TCD dans la foulée, mais cela ne marche
malheureusement plus lorsque la liste-source a déjà servi à
créer un TCD - soit AVANT que soit définie la plage "Data"...
C'est tout mon problème, sans doute un problème de cache
interne à effacer ??

-----Message d'origine-----
Bonjour,
Titres des colonnes sur ligne 1
Aucune cellule vide dans les données de la colonne A
Menu Insertion, Nom, Définir.
Zone Noms dans le classeur : Data
Fait référence à :
ÞCALER(Data!$A$1;0;0;NBVAL(Data!$A:$A);NBVAL(Data!$1:$1))
Céline

"Stessels" a écrit dans le message
de news:

06de01c36fbe$4be082e0$
Je m'efforce, sans succès, d'appliquer un champ dynamique
sur la liste-source d'un TCD EXISTANT.
Quelle que soit la manoeuvre, Excel me répond obstinément :
"Le nom du champ dynamique n'est pas valide.
Pour créer un tableau croisé dynamique, vous devez utiliser
des données sous forme de liste avec des étiquettes de
colonnes. Si vous changez le nom d'un champ dynamique, il
vous faut taper un nouveau nom pour le champ "
Ceci, entre nous, ne veut rien dire... Je veux bien taper
n'importe quoi, mais je ne comprends pas bien !!

Existe-t-il une solution pour recréer le TCD sans être
obligé de recommencer depuis le début le long et minutieux
processus de création de la liste


.



.




.





Avatar
Stessels
Quelques précisions SVP, au risque de passer pour un
emm...eur !
Dois-je comprendre par là qu'une liste de saisie de données
doit impérativement disposer d'une feuille qui lui est
exclusivement réservée au sein du classeur...
Par ailleurs quel est, selon vous l'avantage de la formule
que vous proposez par rapport à celle proposée par AV par
exemple (formule qui, soit dit en passant, fonctionne à
ravir...)
J'aimerais comprendre...

-----Message d'origine-----
Bonjour,
Un onglet de données doit servir UNIQUEMENT pour les données.
Il est impératif d'utiliser un onglet à part pour les
listes ou autres

informations.
Voici la formule pour créer un champ dynamique pour une
liste :

ÞCALER(Listes!$A$2;;;NBVAL(Listes!$A:$A)-1)
Tu veux obtenir une mise à jour auto du TCD à l'ouverture
du classeur ?

C'est dans Options du tableau, Actualiser à l'ouverture.
Céline

"Stessels" a écrit dans le message
de news:

061001c37063$e9fe3490$
J'ai finalement pu résoudre le problème...

J'utilisais, en effet, une formule "générique", conforme à
celle proposée par Céline Brien

ÞCALER(Data!$A$1;0;0;NBVAL(Data!$A:$A);NBVAL(Data!$1:$1))

Il m'a suffit de "personnaliser" la formule en tapant
NBVAL(Data!$A$1:$K$1) pour qu'Excel se comporte à nouveau
de manière civilisée et accepte docilement la plage
auto-dimensionnable lors de la création du TCD
J'en ai conclu que ce sont les" zones de listes", attachées
aux étiquettes de colonnes et stockées à droite de la
liste-source proprement dite qui étaient responsables du
dysfonctionnement de la formule, d'où l'importance de
toujours les positionner avec soin...
Merci de votre aide
En ce qui concerne la programmation destinée à automatiser
l'actualisation, je pensais recourir à une solution plus
simple pour déclencher la procédure "RefreshTable" (
évènement "Activate" sur une ou plusieurs feuilles du
classeur autres que la liste-source, ou une macro
auto-exécutable à l'ouverture du classeur)
Qu'en pensez-vous ?

-----Message d'origine-----
Pas grand chose à ajouter à ce qui a été dit sur la façon
de nommer

dynamiquement la plage du tableau si ce n'est (comme tu as
précisé le nombre de

champs) la plage :
ÞCALER($A$1;;;NBVAL($A$1:$A$2000);NBVAL($A$1:$K$1))
(Etiquettes de colonnes en ligne 1)

Par contre, si tu veux la mise à jour auto du TCD, il faut
passer par une proc

évènementielle (xl2000)
Exemple avec tes données en A1:Kx et mise à jour du TCD si
les 11 champs sont

renseignés (à adapter ?) :
Dans le module de la feuille :

Private Sub Worksheet_Change(ByVal zz As Range)
x = zz.Column: y = zz.Row: If x > 11 Then Exit Sub
If Application.CountA(Range(zz.Offset(0, -x + 1).Address &
":K" & y)) = 11 Then

_
ActiveSheet.PivotTables("LeNomDuTCD").RefreshTable
End Sub

AV

"Stessels" a écrit dans le message
news:

009f01c36ff4$09e2d5b0$
Il s'agit d'une appli de gestion assez complexe et
parfaitement au point, mais qui exige une actualisation
"manuelle" à chaque nouvelle entrée de données, étant donné
qu'une liste auto-dimensionnable n'a pas été établie lors
de la conception. L'opération qqui n"exige guère que
quelques secondes n'est pas très gênante. Ma démarche
actuelle (histoire de peaufiner...),tente néanmoins de
transformer l'application pour rendre ce processus
entièrement automatique.
La liste comporte 11 colonnes, (dont la dernière est
calculée) et il ne me semble pas qu'Excel puisse confondre
deux colonnes au cours du recalcul. Les noms sont les
suivants ; Date, Libellé, Imputation Dépenses, Recettes,
Type, N° Chèque, Emetteur, Catégorie, N° pièce, Mois

-----Message d'origine-----
J'ai essayé ta procédure, mais je n'arrives pas à
reproduire le problème.


Question, quels sont les noms de colonnes de ta base de
données ?


--
Gaetan Mourmant
www.polykromy.com
Consultation - Formation
Excel - Data mining

"Stessels" a écrit dans le message
de news:

066101c36fe0$051eae00$
La procédure est effectivement valable lorsque l'on crée le
TCD "from scratch" - dans la foulée, au départ d'une
liste-source auto-dimensionnable. Elle ne marche plus
lorsque le TCD a été créé au départ d'une liste non
auto-dimmensionnable, c'est à dire unne liste où la plage
"Data" n'existe pas encore.
Je persiste donc et je signe...
Merci quand même...

-----Message d'origine-----
Salut,

Pour redéfinir la plage source une fois le TCD créé:

Tu cliques droit sur ton TCD. Tu choisis l'assistant
(Wizard en anglais).

Sur le premier panel, tu cliques sur "Précédent" (back en
anglais).

Le panel est désormais celui de la sélection de la plage.
Tu donnes la plage ÚTA
Tu cliques sur Terminer.

Salutations,

Daniel M.

"Stessels" wrote in message
news:063901c36fcd$d4288530$
Merci de votre réponse.
C'est effectivement la formule pour créer une liste-source
auto-redimensionnable... Cela marche très bien lorsque l'on
crée le TCD dans la foulée, mais cela ne marche
malheureusement plus lorsque la liste-source a déjà servi à
créer un TCD - soit AVANT que soit définie la plage
"Data"...



C'est tout mon problème, sans doute un problème de cache
interne à effacer ??

-----Message d'origine-----
Bonjour,
Titres des colonnes sur ligne 1
Aucune cellule vide dans les données de la colonne A
Menu Insertion, Nom, Définir.
Zone Noms dans le classeur : Data
Fait référence à :
ÞCALER(Data!$A$1;0;0;NBVAL(Data!$A:$A);NBVAL(Data!$1:$1))
Céline

"Stessels" a écrit dans le message
de news:

06de01c36fbe$4be082e0$
Je m'efforce, sans succès, d'appliquer un champ dynamique
sur la liste-source d'un TCD EXISTANT.
Quelle que soit la manoeuvre, Excel me répond
obstinément :





"Le nom du champ dynamique n'est pas valide.
Pour créer un tableau croisé dynamique, vous devez
utiliser





des données sous forme de liste avec des étiquettes de
colonnes. Si vous changez le nom d'un champ dynamique, il
vous faut taper un nouveau nom pour le champ "
Ceci, entre nous, ne veut rien dire... Je veux bien taper
n'importe quoi, mais je ne comprends pas bien !!

Existe-t-il une solution pour recréer le TCD sans être
obligé de recommencer depuis le début le long et minutieux
processus de création de la liste


.



.




.




.



.







Avatar
AV
Mais c'est juste pour provoquer l'auteur de ladite proc et lire son
onomatopée favorite. :-)


Aaaaaaaaaatchouuuuummm !

C'est pas ça ?
;-)
AV

Avatar
Céline Brien
Bonjour,
Oui : une liste de saisie de données doit impérativement disposer d'une
feuille qui lui est exclusivement réservée au sein du classeur... Je
nomme toujours cet onglet DATA. De même, je nomme DATA le champ
dynamique de cette liste de saisie de données.
Dans certaines colonnes de votre liste de saisie de données, si vous
voulez utiliser la fonction Validation pour limiter la saisie à certains
éléments, je recommande de créer ces listes dans un onglet à part nommé
Listes.
Par exemple, pour le champ Poste, la liste pourrait être :
Poste
Commis
Secrétaire
Directeur
Vendeur
Le titre de la colonne doit toujours être sur la ligne 1. Disons que le
titre Poste est en A1. Vous créez un champ dynamique nommé Poste pour
cette liste selon la formule :
ÞCALER(Listes!$A$2;;;NBVAL(Listes!$A:$A)-1)
Par la suite, de retour dans l'onglet DATA, vous sélectionnez la colonne
de saisie pour les postes et vous demandez que les entrées de cette
colonne soient limitées à la liste Poste.
Menu Données, Validation, Autoriser, Liste, Source, =Poste
Par la suite, grâce au champ dynamique, si vous ajoutez un élément à la
liste Poste, cet élément est automatiquement ajouté à vos listes
déroulantes de la colonne Poste de l'onglet DATA
N'hésitez pas à me revenir si mes explications ne sont pas claires,
Céline


"Stessels" a écrit dans le message de news:
086d01c3709a$532abc50$
Quelques précisions SVP, au risque de passer pour un
emm...eur !
Dois-je comprendre par là qu'une liste de saisie de données
doit impérativement disposer d'une feuille qui lui est
exclusivement réservée au sein du classeur...
Par ailleurs quel est, selon vous l'avantage de la formule
que vous proposez par rapport à celle proposée par AV par
exemple (formule qui, soit dit en passant, fonctionne à
ravir...)
J'aimerais comprendre...

-----Message d'origine-----
Bonjour,
Un onglet de données doit servir UNIQUEMENT pour les données.
Il est impératif d'utiliser un onglet à part pour les
listes ou autres

informations.
Voici la formule pour créer un champ dynamique pour une
liste :

ÞCALER(Listes!$A$2;;;NBVAL(Listes!$A:$A)-1)
Tu veux obtenir une mise à jour auto du TCD à l'ouverture
du classeur ?

C'est dans Options du tableau, Actualiser à l'ouverture.
Céline

"Stessels" a écrit dans le message
de news:

061001c37063$e9fe3490$
J'ai finalement pu résoudre le problème...

J'utilisais, en effet, une formule "générique", conforme à
celle proposée par Céline Brien

ÞCALER(Data!$A$1;0;0;NBVAL(Data!$A:$A);NBVAL(Data!$1:$1))

Il m'a suffit de "personnaliser" la formule en tapant
NBVAL(Data!$A$1:$K$1) pour qu'Excel se comporte à nouveau
de manière civilisée et accepte docilement la plage
auto-dimensionnable lors de la création du TCD
J'en ai conclu que ce sont les" zones de listes", attachées
aux étiquettes de colonnes et stockées à droite de la
liste-source proprement dite qui étaient responsables du
dysfonctionnement de la formule, d'où l'importance de
toujours les positionner avec soin...
Merci de votre aide
En ce qui concerne la programmation destinée à automatiser
l'actualisation, je pensais recourir à une solution plus
simple pour déclencher la procédure "RefreshTable" (
évènement "Activate" sur une ou plusieurs feuilles du
classeur autres que la liste-source, ou une macro
auto-exécutable à l'ouverture du classeur)
Qu'en pensez-vous ?

-----Message d'origine-----
Pas grand chose à ajouter à ce qui a été dit sur la façon
de nommer

dynamiquement la plage du tableau si ce n'est (comme tu as
précisé le nombre de

champs) la plage :
ÞCALER($A$1;;;NBVAL($A$1:$A$2000);NBVAL($A$1:$K$1))
(Etiquettes de colonnes en ligne 1)

Par contre, si tu veux la mise à jour auto du TCD, il faut
passer par une proc

évènementielle (xl2000)
Exemple avec tes données en A1:Kx et mise à jour du TCD si
les 11 champs sont

renseignés (à adapter ?) :
Dans le module de la feuille :

Private Sub Worksheet_Change(ByVal zz As Range)
x = zz.Column: y = zz.Row: If x > 11 Then Exit Sub
If Application.CountA(Range(zz.Offset(0, -x + 1).Address &
":K" & y)) = 11 Then

_
ActiveSheet.PivotTables("LeNomDuTCD").RefreshTable
End Sub

AV

"Stessels" a écrit dans le message
news:

009f01c36ff4$09e2d5b0$
Il s'agit d'une appli de gestion assez complexe et
parfaitement au point, mais qui exige une actualisation
"manuelle" à chaque nouvelle entrée de données, étant donné
qu'une liste auto-dimensionnable n'a pas été établie lors
de la conception. L'opération qqui n"exige guère que
quelques secondes n'est pas très gênante. Ma démarche
actuelle (histoire de peaufiner...),tente néanmoins de
transformer l'application pour rendre ce processus
entièrement automatique.
La liste comporte 11 colonnes, (dont la dernière est
calculée) et il ne me semble pas qu'Excel puisse confondre
deux colonnes au cours du recalcul. Les noms sont les
suivants ; Date, Libellé, Imputation Dépenses, Recettes,
Type, N° Chèque, Emetteur, Catégorie, N° pièce, Mois

-----Message d'origine-----
J'ai essayé ta procédure, mais je n'arrives pas à
reproduire le problème.


Question, quels sont les noms de colonnes de ta base de
données ?


--
Gaetan Mourmant
www.polykromy.com
Consultation - Formation
Excel - Data mining

"Stessels" a écrit dans le message
de news:

066101c36fe0$051eae00$
La procédure est effectivement valable lorsque l'on crée le
TCD "from scratch" - dans la foulée, au départ d'une
liste-source auto-dimensionnable. Elle ne marche plus
lorsque le TCD a été créé au départ d'une liste non
auto-dimmensionnable, c'est à dire unne liste où la plage
"Data" n'existe pas encore.
Je persiste donc et je signe...
Merci quand même...

-----Message d'origine-----
Salut,

Pour redéfinir la plage source une fois le TCD créé:

Tu cliques droit sur ton TCD. Tu choisis l'assistant
(Wizard en anglais).

Sur le premier panel, tu cliques sur "Précédent" (back en
anglais).

Le panel est désormais celui de la sélection de la plage.
Tu donnes la plage ÚTA
Tu cliques sur Terminer.

Salutations,

Daniel M.

"Stessels" wrote in message
news:063901c36fcd$d4288530$
Merci de votre réponse.
C'est effectivement la formule pour créer une liste-source
auto-redimensionnable... Cela marche très bien lorsque l'on
crée le TCD dans la foulée, mais cela ne marche
malheureusement plus lorsque la liste-source a déjà servi à
créer un TCD - soit AVANT que soit définie la plage
"Data"...



C'est tout mon problème, sans doute un problème de cache
interne à effacer ??

-----Message d'origine-----
Bonjour,
Titres des colonnes sur ligne 1
Aucune cellule vide dans les données de la colonne A
Menu Insertion, Nom, Définir.
Zone Noms dans le classeur : Data
Fait référence à :
ÞCALER(Data!$A$1;0;0;NBVAL(Data!$A:$A);NBVAL(Data!$1:$1))
Céline

"Stessels" a écrit dans le message
de news:

06de01c36fbe$4be082e0$
Je m'efforce, sans succès, d'appliquer un champ dynamique
sur la liste-source d'un TCD EXISTANT.
Quelle que soit la manoeuvre, Excel me répond
obstinément :





"Le nom du champ dynamique n'est pas valide.
Pour créer un tableau croisé dynamique, vous devez
utiliser





des données sous forme de liste avec des étiquettes de
colonnes. Si vous changez le nom d'un champ dynamique, il
vous faut taper un nouveau nom pour le champ "
Ceci, entre nous, ne veut rien dire... Je veux bien taper
n'importe quoi, mais je ne comprends pas bien !!

Existe-t-il une solution pour recréer le TCD sans être
obligé de recommencer depuis le début le long et minutieux
processus de création de la liste


.



.




.




.



.







Avatar
Céline Brien
Bonjour,
C'est très intéressant.
Si j'insère plusieurs lignes avec les codes
ActiveSheet.PivotTables("LeNomDuTCD").RefreshTable, je peux actualiser
plusieurs TCD ?
Je vais tester le tout et je vous reviens.
Merci beaucoup,
Céline

"AV" a écrit dans le message de news:

Salut Céline,

Ta procédure événementielle, elle met à jour auto le TCD lors de
l'ajout


d'une nouvelle ligne ? De l'ajout d'une colonne ? Un ou l'autre ?


Lorsque tous les champs de la plage Ax:Kx sont renseignés

AV





Avatar
Daniel.M
Enrhumé mais pas trop rouillé, le AV ;-)

Daniel M.

"AV" wrote in message
news:
Mais c'est juste pour provoquer l'auteur de ladite proc et lire son
onomatopée favorite. :-)


Aaaaaaaaaatchouuuuummm !

C'est pas ça ?
;-)
AV





Avatar
Stessels
Parfaitement clair
Fûté les champs dynamiques en cascade. Vous êtes un puit de
science - Merci

-----Message d'origine-----
Bonjour,
Oui : une liste de saisie de données doit impérativement
disposer d'une

feuille qui lui est exclusivement réservée au sein du
classeur... Je

nomme toujours cet onglet DATA. De même, je nomme DATA le
champ

dynamique de cette liste de saisie de données.
Dans certaines colonnes de votre liste de saisie de
données, si vous

voulez utiliser la fonction Validation pour limiter la
saisie à certains

éléments, je recommande de créer ces listes dans un onglet
à part nommé

Listes.
Par exemple, pour le champ Poste, la liste pourrait être :
Poste
Commis
Secrétaire
Directeur
Vendeur
Le titre de la colonne doit toujours être sur la ligne 1.
Disons que le

titre Poste est en A1. Vous créez un champ dynamique nommé
Poste pour

cette liste selon la formule :
ÞCALER(Listes!$A$2;;;NBVAL(Listes!$A:$A)-1)
Par la suite, de retour dans l'onglet DATA, vous
sélectionnez la colonne

de saisie pour les postes et vous demandez que les entrées
de cette

colonne soient limitées à la liste Poste.
Menu Données, Validation, Autoriser, Liste, Source, =Poste
Par la suite, grâce au champ dynamique, si vous ajoutez un
élément à la

liste Poste, cet élément est automatiquement ajouté à vos
listes

déroulantes de la colonne Poste de l'onglet DATA
N'hésitez pas à me revenir si mes explications ne sont pas
claires,

Céline


"Stessels" a écrit dans le message
de news:

086d01c3709a$532abc50$
Quelques précisions SVP, au risque de passer pour un
emm...eur !
Dois-je comprendre par là qu'une liste de saisie de données
doit impérativement disposer d'une feuille qui lui est
exclusivement réservée au sein du classeur...
Par ailleurs quel est, selon vous l'avantage de la formule
que vous proposez par rapport à celle proposée par AV par
exemple (formule qui, soit dit en passant, fonctionne à
ravir...)
J'aimerais comprendre...

-----Message d'origine-----
Bonjour,
Un onglet de données doit servir UNIQUEMENT pour les données.
Il est impératif d'utiliser un onglet à part pour les
listes ou autres

informations.
Voici la formule pour créer un champ dynamique pour une
liste :

ÞCALER(Listes!$A$2;;;NBVAL(Listes!$A:$A)-1)
Tu veux obtenir une mise à jour auto du TCD à l'ouverture
du classeur ?

C'est dans Options du tableau, Actualiser à l'ouverture.
Céline

"Stessels" a écrit dans le message
de news:

061001c37063$e9fe3490$
J'ai finalement pu résoudre le problème...

J'utilisais, en effet, une formule "générique", conforme à
celle proposée par Céline Brien

ÞCALER(Data!$A$1;0;0;NBVAL(Data!$A:$A);NBVAL(Data!$1:$1))

Il m'a suffit de "personnaliser" la formule en tapant
NBVAL(Data!$A$1:$K$1) pour qu'Excel se comporte à nouveau
de manière civilisée et accepte docilement la plage
auto-dimensionnable lors de la création du TCD
J'en ai conclu que ce sont les" zones de listes", attachées
aux étiquettes de colonnes et stockées à droite de la
liste-source proprement dite qui étaient responsables du
dysfonctionnement de la formule, d'où l'importance de
toujours les positionner avec soin...
Merci de votre aide
En ce qui concerne la programmation destinée à automatiser
l'actualisation, je pensais recourir à une solution plus
simple pour déclencher la procédure "RefreshTable" (
évènement "Activate" sur une ou plusieurs feuilles du
classeur autres que la liste-source, ou une macro
auto-exécutable à l'ouverture du classeur)
Qu'en pensez-vous ?

-----Message d'origine-----
Pas grand chose à ajouter à ce qui a été dit sur la façon
de nommer

dynamiquement la plage du tableau si ce n'est (comme tu as
précisé le nombre de

champs) la plage :
ÞCALER($A$1;;;NBVAL($A$1:$A$2000);NBVAL($A$1:$K$1))
(Etiquettes de colonnes en ligne 1)

Par contre, si tu veux la mise à jour auto du TCD, il faut
passer par une proc

évènementielle (xl2000)
Exemple avec tes données en A1:Kx et mise à jour du TCD si
les 11 champs sont

renseignés (à adapter ?) :
Dans le module de la feuille :

Private Sub Worksheet_Change(ByVal zz As Range)
x = zz.Column: y = zz.Row: If x > 11 Then Exit Sub
If Application.CountA(Range(zz.Offset(0, -x + 1).Address &
":K" & y)) = 11 Then

_
ActiveSheet.PivotTables("LeNomDuTCD").RefreshTable
End Sub

AV

"Stessels" a écrit dans le message
news:

009f01c36ff4$09e2d5b0$
Il s'agit d'une appli de gestion assez complexe et
parfaitement au point, mais qui exige une actualisation
"manuelle" à chaque nouvelle entrée de données, étant donné
qu'une liste auto-dimensionnable n'a pas été établie lors
de la conception. L'opération qqui n"exige guère que
quelques secondes n'est pas très gênante. Ma démarche
actuelle (histoire de peaufiner...),tente néanmoins de
transformer l'application pour rendre ce processus
entièrement automatique.
La liste comporte 11 colonnes, (dont la dernière est
calculée) et il ne me semble pas qu'Excel puisse confondre
deux colonnes au cours du recalcul. Les noms sont les
suivants ; Date, Libellé, Imputation Dépenses, Recettes,
Type, N° Chèque, Emetteur, Catégorie, N° pièce, Mois

-----Message d'origine-----
J'ai essayé ta procédure, mais je n'arrives pas à
reproduire le problème.


Question, quels sont les noms de colonnes de ta base de
données ?


--
Gaetan Mourmant
www.polykromy.com
Consultation - Formation
Excel - Data mining

"Stessels" a écrit dans le message
de news:

066101c36fe0$051eae00$
La procédure est effectivement valable lorsque l'on crée le
TCD "from scratch" - dans la foulée, au départ d'une
liste-source auto-dimensionnable. Elle ne marche plus
lorsque le TCD a été créé au départ d'une liste non
auto-dimmensionnable, c'est à dire unne liste où la plage
"Data" n'existe pas encore.
Je persiste donc et je signe...
Merci quand même...

-----Message d'origine-----
Salut,

Pour redéfinir la plage source une fois le TCD créé:

Tu cliques droit sur ton TCD. Tu choisis l'assistant
(Wizard en anglais).

Sur le premier panel, tu cliques sur "Précédent" (back en
anglais).

Le panel est désormais celui de la sélection de la plage.
Tu donnes la plage ÚTA
Tu cliques sur Terminer.

Salutations,

Daniel M.

"Stessels" wrote in message
news:063901c36fcd$d4288530$
Merci de votre réponse.
C'est effectivement la formule pour créer une liste-source
auto-redimensionnable... Cela marche très bien lorsque
l'on





crée le TCD dans la foulée, mais cela ne marche
malheureusement plus lorsque la liste-source a déjà
servi à





créer un TCD - soit AVANT que soit définie la plage
"Data"...



C'est tout mon problème, sans doute un problème de cache
interne à effacer ??

-----Message d'origine-----
Bonjour,
Titres des colonnes sur ligne 1
Aucune cellule vide dans les données de la colonne A
Menu Insertion, Nom, Définir.
Zone Noms dans le classeur : Data
Fait référence à :
ÞCALER(Data!$A$1;0;0;NBVAL(Data!$A:$A);NBVAL(Data!$1:$1))
Céline

"Stessels" a écrit dans le message
de news:

06de01c36fbe$4be082e0$
Je m'efforce, sans succès, d'appliquer un champ dynamique
sur la liste-source d'un TCD EXISTANT.
Quelle que soit la manoeuvre, Excel me répond
obstinément :





"Le nom du champ dynamique n'est pas valide.
Pour créer un tableau croisé dynamique, vous devez
utiliser





des données sous forme de liste avec des étiquettes de
colonnes. Si vous changez le nom d'un champ dynamique, il
vous faut taper un nouveau nom pour le champ "
Ceci, entre nous, ne veut rien dire... Je veux bien taper
n'importe quoi, mais je ne comprends pas bien !!

Existe-t-il une solution pour recréer le TCD sans être
obligé de recommencer depuis le début le long et
minutieux






processus de création de la liste


.



.




.




.



.



.








1 2 3