> Tous les forums > Forum Bureautique
 Extraction de données sous excelSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
cairn-oc
  Posté le 10/06/2010 @ 21:04 
Aller en bas de la page 
Petit astucien

Dans le fichier joint, j'ai une feuille 'base de donnees', je souhaite extraire des données de cette feuille suivant des critères de tri et aller les placer dans une autre feuille.
EX: dans la feuille 'Tri par zone' j'ai la quantité d'ouvrage par délégataire et par zone. Données que j'ai obtenu par la fonction 'sous.total' et que je suis venu remplir manuellement dans le tableau choisi.
Les données contenues dans la base ayant vocation à évoluer, vous l'avez compris, je cherche à automatiser le remplissage des cellules des différentes feuilles correspondantes aux données dont j'ai besoin.

Je suis empêtrer dans les 'tableaux croisés dynamique' que je ne maîtrise pas bien (et le fait que celui qui va manipuler le fichier demain sera un total novice). J'ai essayé avec des fonctions de 'rechercheH' et 'rechercheV' mais je n'arrive pas à les faire fonctionner correctement.

Auriez vous des conseils à me donner?

http://www.cijoint.fr/cjlink.php?file=cj201006/cij2QbM90K.xls

Merci a vous

Publicité
qmike549
 Posté le 10/06/2010 à 21:09 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien

bonjour

dommage que tu n'es pas précis sur les critéres de sélection de tes données à extraire

mais comme ton fichier est filtrée

fais appel aux différents filtres puis copier les données filtrées

puis colllage spécial et coller tout ou les valeurs à l'endroit voulu

cairn-oc
 Posté le 10/06/2010 à 21:16 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Hello, merci de ta réactivité!

Ce que tu me propose, je sais faire.

par contre comme je l'ai indiqué, je souhaite que l'affichage se fasse automatiquement.

Les critères de selection sont dans les différentes feuilles contenues dans le fichier.

pat

galopin01
 Posté le 11/06/2010 à 00:19 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

bonjour,

Ben, pour moi c'est quand même typiquement du domaine des TCD (Tableaux Croisés Dynamiques) que même un novice devrait être capable de manipuler après quelques minutes d'explications. Car ce sont des TCD élémentaires. YORA juste quelques calculs de pourcentage à rajouter et bricoler la mise en forme car les TCD sont un peu spartiates coté look. Mébon. Je ne vois pas d'autres solutions. Tu fais peut-être un blocage sur les TCD ? parce que YFOPAPLUS de 30 secondes par tableaux pour sortir tes chiffres avec des TCD.

Quand à l'actualisation des TCD c'est encore plus rapide : YAKA savoir cliquer sur le point d'exclamation de la barre de menu !

Toutes autres solutions seraient sans aucun doute beaucoup plus gourmandes en savoir faire...

Tu veux un petit massage de neurones sur le thème des TCD ou quoi ? Je ne comprend peut-être pas bien le sens de la question.

En tout cas je ne vois rien dans ce classeur qui nécessite le moindre FILTRE, SOUS TOTAL ni autre fonctions RECHERCHEV ou autre.

A+

cairn-oc
 Posté le 11/06/2010 à 11:56 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Ok je suis d'accord, les TCD sont adapté dans ce cas.

Par contre l'utilisateur lambda à qui est destiné les données contenu dans les TCD sera totalement infoutu d'en faire un (même avec des explications) parce que ce n'est pas son métier.

J'essai d'automatiser par une macro la "fabrication" de TCD et là ça bloque. J'ai le débogueur qui se mets en alerte:

ub tcd()
'
' tcd Macro
' Macro enregistrée le 11/06/2010 par Patrick
'

'
With ActiveSheet.PivotTables("Tableau croisé dynamique13").PivotFields("Zone")
.Orientation = xlPageField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique13").PivotFields( _
"Délégataire")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique13").PivotFields( _
"Etat structure")
.Orientation = xlColumnField
.Position = 1
End With
ActiveSheet.PivotTables("Tableau croisé dynamique13").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique13").PivotFields("Etat structure"), _
"Nombre de Etat structure", xlCount
ActiveWorkbook.ShowPivotTableFieldList = False
End Sub

En fait ma feuille où doit apparaitre le TCD existe déjà. Donc la macro doit d'abord supprimer tous les résultats précédents puis refaire un TCD dans cette même feuille car la base de donnée est évolutive donc l'utilisateur exécutera plusieurs fois la macro.

Je remets un fichier simplifier pour exemple.

http://www.cijoint.fr/cjlink.php?file=cj201006/cijJAVejQl.xls

Merci

galopin01
 Posté le 11/06/2010 à 15:44 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

bonjour,

Personnellement je ne m'embarrase pas de ce genre de complications.

Je ne reconstruit pas le(s) TCD je les laisse dans un coin

YAPUKA faire une

Sub Actu()
For i = 1 to PivotCaches.count
ActiveWorkbook.PivotCaches(i).Refresh
Next
End Sub

Tu appelles ça dans ton Workbook_Open (ou à la fin ta macro de mise à jour des données) et le tour est joué tu as des TCD toujours à jour.

YA juste à faire une macro qui automatise le transfert des données vers "TonBeauTableauDePrésentation" personnellement je me contenterai d'une formule :

=LIREDONNEESTABCROISDYNAMIQUE... (avec une formule nommé ?) comme sur l'exemple ci-joint (Feuille Tri par zone)

Ne pas tenir compte des erreurs car j'ai modifié certaines lignes de la BDD pour les tests...

Attention seulement à définir ta base de donnée de manière dynamique (Insertion / Nom/ Définir...) pour que le refresh fonctionne correctement.

Sinon si tu tiens absoluement à te compliquer la vie... il faut commencer par :

ActiveWorkbook.PivotCaches.Add(...) avant de :

With ActiveSheet.PivotTables("Tableau croisé dynamique13").PivotFields("Zone")...

Mais je te déconseille cette méthode... (sauf si tu ne peux faire autrement !)

Tu regardes et tu me dis...

A+

cairn-oc
 Posté le 14/06/2010 à 10:58 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Salut Galopin01,

J'ai suivi tes conseils et fait des TCD. C'est top!

Par contre, comment faire pour qu'il me garde la mise en forme une fois que j'ai actualisé les données?

J'ai décoché "mise en forme automatique" dans les options du tableau, il me garde la largeur des colonnes mais pas le reste (format de police, format de cellule)

Y'a un moyen?

galopin01
 Posté le 14/06/2010 à 15:09 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

bonjour,

Je ne pense pas que cela soit possible. Sauf à monter des macros bien compliquées.

Personnelement je n'utilise pas les TCD directement. Ils ne me servent qu'indirectement d'outils de travail.

Personne ne t'oblige à expliquer au gens que la mise à jour concerne un TCD caché...

Je récupère ensuite les données via une formule (nommée) =LIREDONNEESTABCROISDYNAMIQUE dans le tableau de présentation ou les données sont bien plus facile à exploiter comme j'ai fait dans ma démo.

Remarque bien que si tu veux trier ensuite le tableau de présentation sur la colonne S ( pourcentages) par exemple, c'est possible. Alors qu'un TCD ne le permettrait pas. ( tu ne peux trier que les étiquettes )

A+

cairn-oc
 Posté le 14/06/2010 à 20:41 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

D'ac.

J'ai pas compris comment marchait ta formule unique =MAJD?

galopin01
 Posté le 15/06/2010 à 00:15 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

bonjour,

Si tu cliques en C5 et que tu regardes dans Insertion / Nom / Définir tu verras que ce nom correspond à cette formule :

=LIREDONNEESTABCROISDYNAMIQUE("Délégataire";'Tri par zone'!$B$31;"Zone";COLONNE()-2;"Délégataire";'Tri par zone'!$B5)

Tu peux donc remplacer dans la cellule C5 par cette formule si tu préfères... Ensuite YAPUKA faire un copier de cette formule dans toutes les cellules ou tu veux ramener les données.

La formule s'incrémente automatiquement... mais il est plus pratique d'utiliser = MAJD que toute cette longue formule. (enfin à mon avis... c'est pour ça que je le partage !)

De plus si tu macrotes un peu... il est facile d'écrire :

Range("C5:Q1"). Formula = "=MAJD"

Ce qui serait presque impossible si tu voulais traduire ça dans la formule d'origine pour l'incrémenter.

En plus, toujours si tu macrotes un peu... il est très simple de faire -tout de suite après -un collage spécial valeur et tu as avec une macro de trois lignes un tableau impeccable sans la moindre formule...

Nota : Pour faire une formule nommée,c'est très simple : fais d'abord la bonne formule KIVABIEN en C5, vérifie qu'elle s'incrémente parfaitement partout.

Ensuite toujours en C5 tu récupères la formule dans la barre de formule.

Tu cliques sur Insertion / Nom / Définir tu choisis le nom qui te convient et dans la zone "fait référence à" tu colles la formule. YAPUKA valider et remplacer dans toutes les cellules la longue formule par le nom bref que tu as choisi...

Important : Pour l'utilisation de formules nommées. Celles ci se regardent, se copient et se collent en prenant bien soin de travailler à partir de la cellule de référence. Si tu établies ta formule à partir de la cellule C5 et que tu la nommes à partir de la cellule D5 par inadvertance... ça marchera beaucoup moins bien !

En revanche une fois le nommage bien expédié c'est cool. Plus de risque d'erreur ou de modification accidentelle de ta formule. En plus c'est Excel qui se tape tout le boulot...

Il y a bien d'autres avantages aux formules nommées. Mais déjà avec ça, tu as de quoi méditer !

A+



Modifié par galopin01 le 15/06/2010 01:14
cairn-oc
 Posté le 15/06/2010 à 09:06 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Merci.

C'est du lourd!

Je m'en vais de ce pas acheter le manuel du petit sophrologue illustré et je médite tous ça.

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
Ventes flash de printemps sur Amazon
-40% -1 -%
@Amazon
Grosses promotions pour le Super Sale chez Geekbuying
-70% -1 -%
@Geekbuying
SSD MSI Spatium S270 240 Go SATA
16,99 € 20,90 € -19%
@Amazon
LEGO Botanicals Les Succulentes (10309)
41,99 € 49,99 € -16%
@Amazon
Air Fryer NINJA Foodi FlexDrawer (double zone avec séparateur amovible)
199,99 € 255,99 € -22%
@Amazon
Pochette de 20 stylos BIC Cristal Original à pointe moyenne (1 mm)
2,60 € 5 € -48%
@Amazon

Sujets relatifs
publipostage avec liste de données sous excel
transfert données WEB sous excel
traitement données sous excel
importer des données excel sous word
Extraction de données Excel vers Word
Filtre données spécifique sous excel
CLASSER DES DONNEES SOUS EXCEL 2003
défilé des données sous le titre dans excel (résol
organiser mes contacts sous Excel
Excel 2013 sous Windowss 8.1
Plus de sujets relatifs à Extraction de données sous excel
 > Tous les forums > Forum Bureautique