Ok merci, je teste ça demain car je dois m'absenter ce soir.
On se tient au courant.
Encore merci, a demain
Ok merci, je teste ça demain car je dois m'absenter ce soir.
On se tient au courant.
Encore merci, a demain
Bonjour,
Test concluant.
Je vais donc transformer tous mes tableaux en VRAI tableau.
Merci beaucoup pour ton aide.
Je clos le post
Je réponds a mon propre post car j'ai parlé un peu trop vite.
Tout marche sauf pour Retard et En cours (lignes 6 et 17 du code ci dessous)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 'Extraction des n° d actions du plan d amelioration du processus Range("F18").Select Selection.FormulaArray = _ "=IFERROR(INDEX(Tab_Plan_Actions_RP[N°], SMALL(IF((Tab_Plan_Actions_RP[Statut]=RC5) * (Tab_Plan_Actions_RP[Processus]=R2C1), ROW(Tab_Plan_Actions_RP[N°]) - ROW(Tab_Plan_Actions_RP[[#Headers],[N°]]), 10000000), COLUMN()-COLUMN(RC5))), """")" Range("F19").Select Selection.FormulaArray = _ "=IFERROR(INDEX(Tab_Plan_Actions_RP[N°], SMALL(IF((Tab_Plan_Actions_RP[Statut]=""En cours"") * (Tab_Plan_Actions_RP[Processus]=R2C1) * (Tab_Plan_Actions_RP[Jours de retard] <> ""Aucun""), ROW(Tab_Plan_Actions_RP[N°]) - ROW(Tab_Plan_Actions_RP[[#Headers],[N°]]), 10000000), COLUMN()-COLUMN(RC5))), """")" Range("F20").Select Selection.FormulaArray = _ "=IFERROR(INDEX(Tab_Plan_Actions_RP[N°], SMALL(IF((Tab_Plan_Actions_RP[Statut]=RC5) * (Tab_Plan_Actions_RP[Processus]=R2C1), ROW(Tab_Plan_Actions_RP[N°]) - ROW(Tab_Plan_Actions_RP[[#Headers],[N°]]), 10000000), COLUMN()-COLUMN(RC5))), """")" Range("F21").Select Selection.FormulaArray = _ "=IFERROR(INDEX(Tab_Plan_Actions_RP[N°], SMALL(IF((Tab_Plan_Actions_RP[Statut]=RC5) * (Tab_Plan_Actions_RP[Processus]=R2C1), ROW(Tab_Plan_Actions_RP[N°]) - ROW(Tab_Plan_Actions_RP[[#Headers],[N°]]), 10000000), COLUMN()-COLUMN(RC5))), """")" Selection.FormulaArray = _ "=IFERROR(INDEX(Tab_Plan_Actions_RP[N°], SMALL(IF((Tab_Plan_Actions_RP[Statut]=RC5) * (Tab_Plan_Actions_RP[Processus]=R2C1), ROW(Tab_Plan_Actions_RP[N°]) - ROW(Tab_Plan_Actions_RP[[#Headers],[N°]]), 10000000), COLUMN()-COLUMN(RC5))), """")" Range("F22").Select Selection.FormulaArray = _ "=IFERROR(INDEX(Tab_Plan_Actions_RP[N°], SMALL(IF((Tab_Plan_Actions_RP[Statut]=""En cours"") * (Tab_Plan_Actions_RP[Processus]=R2C1) * (Tab_Plan_Actions_RP[Jours de retard]= ""Aucun""), ROW(Tab_Plan_Actions_RP[N°]) - ROW(Tab_Plan_Actions_RP[[#Headers],[N°]]), 10000000), COLUMN()-COLUMN(RC5))), """")" Range("F18:F22").Select Selection.AutoFill Destination:=Range("F18:L22"), Type:=xlFillDefault Range("F18:L22").Select Range("E23").Select
Bonjour,
Il te faut un nom de tableau plus court pour que chaque formule tienne en 255 caractères.
Ok je suis nul, en plus on en avait parlé auparavant.
Je corrige l'erreur.
sinon une autre question si tu veux bien encore m'aider :
Lorsque mon tableau m'indique l'ensemble des actions (Réalisé-En cours-Retard-Abandon-Permanente) Lignes F19:L19, je voudrais, uniquement pour les actions en RETARD, avoir en cellules D35: D41 les N° qui viennent se reporter puis en E35:E41 les échéances de ces actions et en F35:F41 les points de situation. En D34 le titre N° en E34 Échéances et F34 Point de situation
Je joins un fichier exemple
La formule est quasiment la même:
plan action.xlsx
Merci.
Je me doutais bien que ça devait etre quasi pareil mais j'ai dû mal à la comprendre.
En plus je n'ai pas trop de logique.
Si tu veux que je te l'explique, n'hésite pas à demander...
Au final, je doute toujours de l'utilité d'une macro en tout cas pour insérer ces formules.
Et tu devrais remplacer tous tes
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Range("F22").Select Selection.FormulaArray =
En ayant à l'esprit que le jour où tu veux décaler tout d'une ligne et/ou d'une colonne, toutes les adresses dans ta macro sont à remplacer... :p
Code : Sélectionner tout - Visualiser dans une fenêtre à part Range("F22").FormulaArray =
Tu devrais au minimum utiliser des plages nommées (une en chaque début de table et après tu gères en relatif avec la fonction offset).
ouille ouille ouille, quoi qui nesse ?Tu devrais au minimum utiliser des plages nommées (une en chaque début de table et après tu gères en relatif avec la fonction offset).
Sinon il est vrai que les programmeurs de chez Microsoft Office n'ont toujours pas étudier la question concernant le renommage automatique des cellules, des colonnes, des noms de tableau, etc...
Ex: supposons que tu affectes le nom PremiereCase à F18:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Range("PremiereCase").FormulaArray = _ "=IFERROR(INDEX(Tab_Plan_Actions_RP[N°], SMALL(IF((Tab_Plan_Actions_RP[Statut]=RC5) * (Tab_Plan_Actions_RP[Processus]=R2C1), ROW(Tab_Plan_Actions_RP[N°]) - ROW(Tab_Plan_Actions_RP[[#Headers],[N°]]), 10000000), COLUMN()-COLUMN(RC5))), """")" Range("PremiereCase").Offset(1,0).FormulaArray = _ "=IFERROR(INDEX(Tab_Plan_Actions_RP[N°], SMALL(IF((Tab_Plan_Actions_RP[Statut]=""En cours"") * (Tab_Plan_Actions_RP[Processus]=R2C1) * (Tab_Plan_Actions_RP[Jours de retard] <> ""Aucun""), ROW(Tab_Plan_Actions_RP[N°]) - ROW(Tab_Plan_Actions_RP[[#Headers],[N°]]), 10000000), COLUMN()-COLUMN(RC5))), """")" Range("PremiereCase").Offset(2,0).FormulaArray = _ "=IFERROR(INDEX(Tab_Plan_Actions_RP[N°], SMALL(IF((Tab_Plan_Actions_RP[Statut]=RC5) * (Tab_Plan_Actions_RP[Processus]=R2C1), ROW(Tab_Plan_Actions_RP[N°]) - ROW(Tab_Plan_Actions_RP[[#Headers],[N°]]), 10000000), COLUMN()-COLUMN(RC5))), """")" Range("PremiereCase").Offset(3,0). <etc>
Bonjour,
Sauf si je n'ai rien compris, est-ce qu'un simple tableau croisé dynamique ne ferait pas l'affaire ?
- Dans la liste des données, ajouter une colonne avec un numéro unique
Dans le tableau croisé dynamique- Le processus en filtre de rapport
- Le n° en étiquettes de colonnes
- Le statut en étiquettes de lignes
- et la colonne ajoutée en valeur avec comme synthèse 'Nombre'
Philippe Tulliez
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier
Bonjour,
Et bien rien n'empêche de réaliser un TCD au départ d'une liste de données qui elle même est le résultat de la consolidation de plusieurs autres tableaux. Il faut toujours découper les problèmes en plusieurs solutions.Non un TCD ne me convient pas car il s'agit de regrouper à des endroits precis sur une feuille nommée SYNTHESE un tas de renseignements qui vient de plusieurs feuilles d'une base de données.
Philippe Tulliez
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier
Oui mais n'etant pas le seul a utiliser cette BdD, je prefere l'automatisation et de + les TCD sont trop complexes à interpréter lors des réunions. Il me faut du Visuel, du tapes à l'œil.
Merci à toi Promethee25
Voici le fichier avec les explications.
J'ai compris le système avec soit Colonne soit Ligne mais dans ce cas c'est les deux car quand on arrive en fin de ligne, il faut repartir sur la ligne du dessous.
Bonjour,
En considérant que tu sors bien 10 résultats par ligne, mets ça en D44:
Puis tu étires vers la droite et vers le bas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part =SIERREUR(INDEX(Tab_Suivi_Doc[N° Documents]; PETITE.VALEUR(SI((Tab_Suivi_Doc[Statut]=$D$43) * (Tab_Suivi_Doc[Processus]=$A$2); LIGNE(Tab_Suivi_Doc[N° Documents]) - LIGNE(Tab_Suivi_Doc[[#En-têtes];[N° Documents]]); 10000000); COLONNE()-COLONNE($D$43) + 1 + 10 * (LIGNE() - LIGNE($D$43) - 1))); "")
Si tu mets 11 résultats par ligne, remplace le 10 par 11.
Merci beaucoup, j'ai pu grâce à toi, mettre d'autres formules matricielles dans mon tableau de synthese et j'avance à grands pas.
Encore et encore merci pour ton aide qui m'est très précieuse.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager