Sélectionner toutes les lignes d'1 tableau à taille variable

Bonjour à toutes et tous !!!

Je viens vous solliciter pour résoudre mon problème.

Je créé un tableau croisé dynamique à partir d'une base de données dans laquelle les variables (colonnes) ne changent pas mais dont le nombre d'enregistrements (lignes) peut varier.

Voici le code :

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _

"BDD!R1C1:R2540C9", Version:=xlPivotTableVersion12). _

CreatePivotTable TableDestination:="dynamique!R3C1", TableName:= _

"Tableau croisé dynamique", DefaultVersion:=xlPivotTableVersion12

Je souhaiterai remplacer R2540 par un code générique qui pointerait sur la dernière ligne du tableau !

Je sais afficher cette dernière ligne en utilisant :

fin_bdd = Sheets("BDD").Range("A1").End(xlDown).Row

si j'affiche le résultat avec msgbox, j'obtiens bien "2540"

J'ai voulu remplacer 2540 par fin_bdd dans mon code, mais ça ne marche pas !

Merci d'avance de l'aide que vous voudrez m'apporter

Cordialement

Salut,

Essaie de remplacer "BDD!R1C1:R2540C9" par "BDD!R1C1:R" & fin_bdd & "C9".

Si ça ne fonctionne pas, merci de joindre ton fichier

Cordialement.

Yvouille a écrit :

Salut,

Essaie de remplacer "BDD!R1C1:R2540C9" par "BDD!R1C1:R" & fin_bdd & "C9".

Si ça ne fonctionne pas, merci de joindre ton fichier

Cordialement.

désolé mais ça ne fonctionne pas !

Merci pour ton aide, voici le fichier

22achille-60.xlsm (91.93 Ko)

Salut Achille,

Mon idée fonctionne parfaitement. Dans le fichier ci-joint, j’ai enregistré une macro sur la base d’un tableau contenant une dernière Série 5 et le résultat est la Macro1.

Puis j’ai copié cette macro et l’ai renommée Macro2, macro dans laquelle j’ai introduit une variable identique à la tienne afin de tenir compte du nombre de lignes réel du tableau et ça fonctionne parfaitement.

Maintenant ta macro est si compliquée – et tu y effectues tellement de manipulations inutiles - que je n’ai pas voulu chercher d’où pouvait provenir le problème. Si je devais continuer de t’aider avec ce fichier, il faudrait que tu dises ce que tu désires obtenir exactement comme résultats et que l’on reparte à zéro avec ce travail.

Amicalement.

14achille-60-v1.xlsm (84.12 Ko)
Achille60 a écrit :

Salut Yvouille

Merci de consacrer du temps à mon dossier.

Concernant mon programme vba, voilà ce que je souhaiterais :

La BDD est alimentée au fil de l'eau.

L'utilisateur doit pouvoir obtenir un tableau de bord en choisissant un mois minimum et un mois maximum.

J'ai donc créé un tdb vierge.

Le programme duplique le tdb vierge et le renomme new

Ensuite, il utilise un tableau croisé dynamique pour alimenter le tdb.

J'aurais pu utiliser une boucle mais je n'ai pas réussi, je me suis donc rabattu sur le tableau croisé dynamique.

Je supprime les mois non observés dans le tdb

Je renomme la feuille.

Reste ensuite à compléter le titre du tdb et le centrer sur l'espace disponible.

Insérer un graphique

Enregistrer le document au format pdf

Voilà tu sais tout.

Bonne journée

Salut,

Merci de rester sur le Forum.

Tout d’abord tu as écrit « Médécine » au lieu de « Médecine » sur ta feuille BDD. Il vaut mieux faire attention à ce genre de trucs, sinon ça peut fausser complètement un code VBA. Si nécessaire, tu peux placer une liste de validation afin de ne pas pouvoir saisir de données erronées.

Sinon j’ai placé un nouvel UserForm – ouvert par le nouveau bouton mis en place - qui demande la date de début et de fin et tout le code nécessaire est placé justement dans le code de cette forme.

Comme je ne savais pas quels chiffres tu désirais additionner réellement, j’ai pris pour l’exemple la colonne G de ta feuille BDD.

Ta colonne I avec le numéro des mois n’est pas indispensable.

Si tu le désires, ta feuille « vierge » pourrait être masquée.

Il n'y a encore aucun garde-fou si tu saisis des données fantaisistes dans le UserForm (quelque chose d'autre que les mois de 01 à 12 ou un mois de départ plus grand que le mois final) ou si une feuille pour une période précise existe déjà (le code bloque).

A te relire.

EDIT : En fait je ne sais pas quels chiffres tu as pris car avec ta macro, pour le mois de février, ça trouve un total pour « Médecine générale » de EUR 1'292.15 alors que pour le même mois et la même description interne, je trouve EUR 1'671.00 si je prends la colonne F (intitulée mt_inter) de ta feuille BDD et EUR 1'431.60 si je prends la colonne G (intitulée mt_rmb, c’est cette dernière version que je t’ai livrée). De mon côté, j’ai contrôlé ces totaux et ils semblent jouer.

26achille-60-v1.xlsm (84.35 Ko)

Salut Yvouille

Encore merci pour le travail accompli.

En fait, je totalise la colonne G par mois et par code inter dès lors que le FLAG_OK est à 1.

Etant vraiment novice en vba, je vais étudier avec attention ton programme pour tenter de le comprendre.

Merci encore

Alors voici le fichier modifié.

J'ai quand même masqué la feuille « vierge ».

Amicalement.

18achille-60-v2.xlsm (85.62 Ko)

Salut Yvouille

Merci encore, je ne le dirais jamais assez, de ton aide.

J'ai apporté quelques modifs et tenté d'avancer dans mes travaux.

J'ai ajouté un graphique et celui ci me pose un petit problème.

Lorsque j'ai moins de 4 mois sélectionnées, l'axe des abscisses et des ordonnées sont inversés, le graphique ne veut plus rien dire.

A partir de 4 mois, c'est bon.

Je voudrais sauvegarder mon TDB au format PDF en intégrant la fourchette de mois mais je n'y arrive pas !

J'ai essayé avec "texte"&variable&"texte"&variable&"texte" mais sans succès.

Je te joins la version 3 !

25achille-60-v3.xlsm (88.02 Ko)

Pour enregistré avec des variables, tu utilises la même procédure que lors de ma toute première réponse.

Voici ton code modifié :

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Users\Pascal\TDB mensuel de " & mois_min & " à " & mois_max, Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=True

A noter que .pdf n'est pas nécessaire.

Je ne suis pas un spécialiste des graphiques ; désolé. Je te conseille alors d'indiquer ce fil comme résolu (en cliquant sur le petit V vert dans l'un de tes messages) et d'ouvrir un nouveau fil avec cette nouvelle question.

Bonnes salutations.

EDIT :

Achille60 a écrit :

J'ai essayé avec "texte"&variable&"texte"&variable&"texte" mais sans succès.

Dans ton fichier V3, tu n'as en tout cas pas utiliser cette méthode. Peut-être que ton problème vient du fait que tu n'as pas laissé d'espaces - comme dans ton texte ci-dessus - avant et après le signe &

Ok merci beaucoup à toi !

Salut,

J'ai vu que tu n'avais pas trop de succès avec ton autre demande. Comme tu ne fournis pas de fichier, ça ne m'étonne pas trop

A tout hasard, je t'indique comment changer manuellement ces axes. Tu actives le tableau, tu effectues un clic-droit par dessus et tu choisis "Sélectionner des données". La tu cliques sur "Changer de ligne ou de colonne" et les données s'inversent.

J'ai essayé d'enregistré une macro tout en effectuant ces opérations, mais ça ne fonctionne pas par la suite ; le code enregistré bloque.

Je te souhaite quand même que quelqu'un trouve la solution

Amicalement

capture 31 12
Yvouille a écrit :

Salut,

J'ai vu que tu n'avais pas trop de succès avec ton autre demande. Comme tu ne fournis pas de fichier, ça ne m'étonne pas trop

Oui, tu as parfaitement raison et je viens de remédier à ce problème.

Merci

Rechercher des sujets similaires à "selectionner toutes lignes tableau taille variable"