Tableau croisé dynamique

Afin de tester, j'ai renommé l'onglet "Compil" et cela ne marche toujours pas.

"erreur d'exécution 1004 : nom de champ introuvable ou incorrect dans la base d'extraction"

Cela peut-il t'aider à déméler le pb?

2planning-2016.xlsx (219.36 Ko)
3planning-ok.xlsx (230.63 Ko)

Re-,

je suppose donc que les titres ne sont pas exactement les mêmes..

Il faut qu'ils aient la même orthographe

au pire, remplace par ce code :

Sub extract()
Dim DerLig As Long, Prem As Long
Dim Flag As Boolean
Application.ScreenUpdating = False
Range("A2:K65000").Delete Shift:=xlUp
For Each sh In Sheets
    If Left(sh.Name, 7) = "Extract" Then
        With sh
            If Not Flag Then
                [A1] = .[C1]: [B1] = .[D1]: [C1] = .[I1]
                [D1] = .[J1]: [E1] = .[K1]: [F1] = .[M1]
                [G1] = .[N1]: [H1] = .[W1]: [I1] = .[X1]
                [J1] = .[Y1]: [K1] = .[Z1]
                Flag = True
            End If
            DerLig = .[A65000].End(xlUp).Row
            .Range("A1:AD" & DerLig).Name = "base"
            Prem = [A65000].End(xlUp).Row + 1
            Range("A1:K1").Copy Cells(Prem, 1)
            [M2].FormulaR1C1 = _
                "=OR('" & .Name & "'!RC[-10]=""C"",'" & .Name & "'!RC[-10]=""D"",'" & .Name & "'!RC[-10]=""E"",'" & .Name & "'!RC[-10]=""F"")"
            .Range("base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
                "M1:M2"), CopyToRange:=Range(Cells(Prem, 1), Cells(Prem, 11))
            Range(Cells(Prem, 1), Cells(Prem, 11)).Delete Shift:=xlUp
        End With
    End If
Next sh
[M2].ClearContents
Range("A1:K" & [A65000].End(xlUp).Row).Name = "base2"
ActiveWorkbook.RefreshAll
End Sub

Félix,

J'ai essayé avec le nouveau code à nouveau mais cela ne marche pas. Je pense qu'il vaut mieux que j'arrête pour ce soir car j'ai encore un peu de boulot avant de quitter.

Es tu Ok pour reprendre demain matin, à tête reposée, si tu es dispo bien entendu?

Je ne sais comment te remercier!

Je te souhaite une très bonne soirée!

Re-,

Demain matin, non, je bosse, mais demain soir, pas de soucis....

Bonne soirée

Bonjour Félix,

Juste un petit mot pour te dire que j'ai essayé à nouveau ce matin, en vain.

Je crois que j'ai d'énormes progrès à faire.......

Je sais que tu bosses et que tu n'es pas dispo. Perso, je suis au bureau jusqu'à environ 17 heures.

Sinon, tant pis, ce sera la semaine prochaine ou quand tu pourras! (de la maison, c'est trop galère.....)

Un peu en avance, si on se parle plus d'ici là, bon week end!

Bonsoir,

Je crois que j'ai d'énormes progrès à faire.......

Non, comme dit dans un de mes précédents posts, "On va y arriver"

Je sais que tu bosses et que tu n'es pas dispo

.....Pas Faux, bien que j'aime bien le cassoulet.....

Sinon, tant pis, ce sera la semaine prochaine ou quand tu pourras!

Ce serait bien qu'on règle ce pb avant que je ne sois indispo......

Je serai indispo du 27/04 au 28/05, au mieux.....

Salut Felix!

Pour le cassoulet, pas de problème. Si tu viens à Toulouse un de ces jours, fais moi signe, je te l'offrirai avec plaisir!

Je suis au boulot, donc, si tu as du termps, n'hésites pas à me le faire saoir.

Bonne journée!

Re!

J'espère que tu as passé une bonne journée!

Puisque nous avons des soucis pour nous rencontrer, je vais essayer de t'indiquer là où cela bloque.

Je lance la macro, puis je clique sur debogage.

A ce moment l'instruction à partir de range ("base") jusque 11)) est surlignée en jaune.

Le résultat est l'affichage en ligne 2 de ma ligne de titre avec FAUX en M2 + une flêche jaune en face de la ligne qui commence par "M1:M2"), CopyToRange..

J'ai contrôlé les titres dans les 3 onglets, ils sont identiques.

J'ai renommé l'onglet en Compil, comme tu l'as fait au début.

Voilà, j'espère que je te t'ennuie pas trop avec mes pb.

Demain, je suis au boulot à 7 h. Si tu me fais passer des messages ce soir, je les verrai à la première heure.

Bonne soirée et...merci!

Fabienne

Sub extract()
Dim DerLig As Long, Prem As Long
Application.ScreenUpdating = False
Range("A2:K65000").Delete Shift:=xlUp
For Each sh In Sheets
    If Left(sh.Name, 7) = "Extract" Then
        With sh
            DerLig = .[A65000].End(xlUp).Row
            .Range("A1:AD" & DerLig).Name = "base"
            Prem = [A65000].End(xlUp).Row + 1
            Range("A1:K1").Copy Cells(Prem, 1)
            [M2].FormulaR1C1 = _
                "=OR('" & .Name & "'!RC[-10]=""FM - Back Office Infratructure"",'" & .Name & "'!RC[-10]=""FM - Back Office Application"",'" & .Name & "'!RC[-10]=""FM - Pôle service"",'" & .Name & "'!RC[-10]=""FM - Service Desk"")"
            .Range("base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
                "M1:M2"), CopyToRange:=Range(Cells(Prem, 1), Cells(Prem, 11))
            Range(Cells(Prem, 1), Cells(Prem, 11)).Delete Shift:=xlUp
        End With
    End If
Next sh
[M2].ClearContents
Range("A1:K" & [A65000].End(xlUp).Row).Name = "base2"
ActiveWorkbook.RefreshAll
End Sub

Bonsoir,

je reviens un peu à ton fichier...

Pour savoir ce qui ne fonctionne pas, peux-tu vérifier dans ton fichier :

Onglet "compil", que la cellule M1 soit vide...

Peux -tu rajouter cette ligne dans le code :

Range("N1").Value = Prem

Tu insère cette ligne juste après la ligne :

Prem = [A65000].End(xlUp).Row + 1 

et tu me donnes la valeur inscrite dans la cellule N1

Peux-tu recopier la formule inscrite dans la cellule M2, et la mettre ici?

Lorsque tu fais Insertion/Nom/Définir, tu cliques sur "base", et ensuite, tu cliques dans la cellule du bas, celle qui contient le nom de la feuille et les cellules concernées.

Est-ce que la zone concernée est entourée de pointillés?

Lorsque tu déroules le code en pas à pas (clique dans le code, et appuie sur F8, et regarde en même temps dans la feuille en diminuant la feuille de code), est-ce que la première ligne est bien recopiée dans la première ligne vide?

Bref, fais ces petits contrôles, et à demain soir....

Bonjour Felix!

C'est gentil de revenir vers moi car je te soupçonne d'être très occupé!

Alors, voici :

Valeur inscrite dans N1 : 2

Formule dans M2 :

=OU('Extract janvier'!C2="FM - Back Office Infratructure";'Extract janvier'!C2="FM - Back Office Application";'Extract janvier'!C2="FM - Pôle service";'Extract janvier'!C2="FM - Service Desk")

A priori, je n'ai aucune plage de cellules nommées "base" dans le classeur. C'est peut-etre cela qui coince. j'ai peut être loupé une étape à ce niveau mais je n'arrive pas à trouver où.

En déroulant le code pas à pas, il me dit "impossible d'exécuter le code en mode arrêt" au niveau de la ligne : For Each sh In Sheets

Ci-dessous le résultat de l'exécution de la macro

ligne 1 : Orga Niv 2 Nom Prenom TYPE F / A / I / NF Job Code Nature de revenu Commentaires Regroupement Client datepresence datepresence2 Durée (en jours) Type de présence 2

ligne 2 : Orga Niv 2 Nom Prenom TYPE F / A / I / NF Job Code Nature de revenu Commentaires Regroupement Client datepresence datepresence2 Durée (en jours) Type de présence FAUX

C'est drôle! j'ai l'impression de parler une langue étrangère sans comprendre ce que je suis en train de dire.

J'espère sincèrement que je suis assez claire dans mes explications, n'hésites pas à me dire si ça va pas.

Je suis en congés à partir de ce soir jusqu'à mardi soir (je vais à un mariage chez les ch'tis). J'essairai quand même de me connecter (je vais m'envoyer le fichier à la maison)

Très bonne journée!

Fabienne

Re!

J'y reviens

Dans le gestionnaire de noms, j'ai enfin trouvé les noms des plages je vais te les indiquer et je crois avoir trouvé la faille (mais, bien sûr, je ne sais pas la résoudre...)

Base fait référence à Extract janvier!$A$1:$A$AD11142

Base 2 fait référence à compil: $A$1:$K$1

Critères fait référence à Compil!$M$1:$M$2

Critères fait référence à Extract janvier!$M$1:$M$2

Extraire fait ref à Compil!#ref

et enfin Extraire fait ref à Extract janvier!$J$1:$K$11

Voilà peut être une piste à exploiter?

Bonsoir,

dans les noms de zone que tu as fournis, tout me semble correct..... (même si tu as un #REF, dans une formule, c'est normal, je supprimes la ligne d'extraction APRES chaque extraction)

Donc, le pb vient d'autre part.....

Ce qui m'interpelle, c'est cette ligne "impossible d'exécuter le code en mode arrêt"........

Ce message d'avertissement n'apparait normalement que lorsqu'on manipule des objets VBA....

Si cela t'intéresse, je peux te fournir mon adresse mail en MP, et tu pourrais me joindre ton fichier.....

Fais moi signe....

Si tu arrives à te connecter pendant tes périodes de repos bien méritées....

Bon W-E, et bon mariage, chez les Ch'tis (normalement, pas de soucis, j'y ai participé à quelques uns chez eux, c'est pas facile.....surtout le lendemain......)

1test.zip (53.39 Ko)

Bonsoir!

je suis connectée de chez moi. j'espère que ca va marcher (mon micro, dur, dur...)

C'est quoi MP?

Où puis je te fournir mon adresse mail sans qu'elle soit visible de tout le forum?

Re,

je t'envoies mon adresse mail par Messagerie Privée

Tu pourras me faire parvenir ton fichier, si tu le désires, bien sûr

Je veux bien, bien sûr mais comment as tu pu avoir mon adresse mail privée?

Tu la vois?

Re-,

Euh, je veux bien, mais le fichier que tu m'as envoyé, est "Mon" fichier.....

Et forcément, chez moi, il fonctionne....

JE voulais dire, ton fichier "Réel", avec 2 onglets, commençant par "Extract......"

Bref, une partie de ton fichier réel.....

Bonne soirée

Bonsoir,

j'ai bien reçu tes fichiers...

Et effectivement, les titres ne sont pas identiques, et de plus, sont en ligne 5...

Donc, forcément, c'est normal que cela "Bugge"..........

Je t'ai envoyé un fichier correctif....

Copies tous les onglets de tes extractions automatiques dans ce fichier (clic droit dur le nom de l'onglet, "Déplacer ou Copier", sélectionne "Créer une copie", et sélectionne le classeur dans "Dans le Classeur....."

Bon essai, et à bientôt pour le cassoulet.....

Bonjour Félix et bonjour à tout le forum!

Merci beaucoup!!!!!!!

Je vais tester mais je suis sûre que ça va fonctionner. je note comme résolu et....à bientôt.

Fabienne

Rechercher des sujets similaires à "tableau croise dynamique"