XL 2016 Formule matricielle nommage dynamique

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

KRUG WOO

XLDnaute Junior
Bonjour,
Les formules matricielles dans mon fichier Excel marche très bien, mais lorsque j'ajoute des données, le fichier n'est plus dynamique, l'enregistrement est lent et se met au bug si on bouscule trop. En mettant plusieurs données différents, et d'afficher ensuite les filtres que vous aimeriez voir, l'affichage ou le rendu prend du temps. Je connais rien en VBA mais je partage mes formules au cas ou vous trouverez quelque chose qui le met plus dynamique.
On ajoute des données dans le Feuillet "BASE" et Feuillet "CA-Client".
Ce que j'amerai voir, recapituler, et imprimé se trouve dans le Feuillet "Activité" et "Liste client" (il y a des zones de listes deroulante)
Merci les amis 😃
Cdt
 

Pièces jointes

Hello
alors pour les plages "dynamique"

tu as tout intérêt à passer par l'utilistation de tables structurées
voir ta feuille "Base" ==> j'ai mis sous forme de TS, et je l'ai nommée "t_Base"

==> toutes les plages nommées avec décaler, deviennent inutile
il suffit de faire référence à la colonne par son nom
regarde les formules que jai modifiées dans la feuille activités, juste le tableau de gauche (colonnes, D F H J ...)
pas touché à la formule de la colonne B
 

Pièces jointes

Hello
alors pour les plages "dynamique"

tu as tout intérêt à passer par l'utilistation de tables structurées
voir ta feuille "Base" ==> j'ai mis sous forme de TS, et je l'ai nommée "t_Base"

==> toutes les plages nommées avec décaler, deviennent inutile
il suffit de faire référence à la colonne par son nom
regarde les formules que jai modifiées dans la feuille activités, juste le tableau de gauche (colonnes, D F H J ...)
pas touché à la formule de la colonne B
Hello,
Oui, cela marche, merci, mais c'est plutôt par rapport à la matrice qui me pose problème, avec de nombreux données enregistrer, excel se met à ralentir et finir par se bloquer.
 
ok, tu as donc intérêt à passer par une macro vba qui travaille avec des tableaux.. le temps de traitement est plus rapide..
je regarde et reviens vers toi avec une proposition

PS: les colonnes "intermédiaires" vide qui ne servent qu'à "séparer" les infos.;et pour faire "joli".. sont elles indispensables??
l'utilisation de tables struturée et le choix du style permet tout un tas de présentations..
 
Regarde la PJ
dans la feuille activité, dès que tu sélectionnes en B2 ou K2, la macro est lancée, et les deux tables de la feuille sont mises à jour

j'ai mis des commentaires dans le code pour expliquer le pourquoi comment
toutes tes plages nommées ne sont pas utilisées==> elles pourront être supprimées

normalement, tu devrais pouvoir dupliquer pour l'autre feuille "Liste Client" ==> je te laisse essayer et revenir vers moi si souci
 

Pièces jointes

Regarde la PJ
dans la feuille activité, dès que tu sélectionnes en B2 ou K2, la macro est lancée, et les deux tables de la feuille sont mises à jour

j'ai mis des commentaires dans le code pour expliquer le pourquoi comment
toutes tes plages nommées ne sont pas utilisées==> elles pourront être supprimées

normalement, tu devrais pouvoir dupliquer pour l'autre feuille "Liste Client" ==> je te laisse essayer et revenir vers moi si souci
Tu est très fort en VBA vgendron 💪 , j'ai vu le code.
Oui, dès que je sélectionne en B2 ou K2, la macro est lancée, mais après, quand je choisi un mot dans la liste B2 ou K2, les données affichés ne changent pas (erreur d'exécution 438, débogage).
 
Je présume que tu as copié les macros dans ton vrai fichier..

ca ne suffit pas..
il faut aussi transformer les tableaux en tables structurées et leur donner les noms tels que mis dans mon fichier
remarque bien que dans la feulle Activité, j'ai supprimé les colonnes que tu utilisais pour séparer les données

tu aurais sans doute plus vite fait de copier coller tes données de ton vrai fichier VERS celui que je t'ai fait
en prenant soin de copier les données à partir de la ligne 5

(erreur d'exécution 438, débogage==> Peux tu indiquer sur quelle ligne de code, le debuggeur s'arrete? (ligne surlignée en jaune)
 
Je présume que tu as copié les macros dans ton vrai fichier..

ca ne suffit pas..
il faut aussi transformer tableaux en tables structurées et leur donner les noms tels que mis dans mon fichier
remarque bien que dans la feulle Activité, j'ai supprimé les colonnes que tu utilisais pour séparer les données

tu aurais sans doute plus vite fait de copier coller tes données de ton vrai fichier VERS celui que je t'ai fait
en prenant soin de copier les données à partir de la ligne 5

(erreur d'exécution 438, débogage==> Peux tu indiquer sur quelle ligne de code, le debuggeur s'arrete? (ligne surlignée en jaune)
Oui, j'ai vue qu'il faut transformer les tableaux en tables structurées.
Erreur d’exécution se situe: Sub TriTS, ligne 3 "Sort.SortFields.Add2 Key:=.ListColumns(ColTri).Range"
 
étrange..
est ce que il y a plus d'une ligne à trier??
pour le savoir
remplace la macro par celle-ci

VB:
Sub TriTS(NomTS As ListObject, ColTri As Integer, Ordre As Integer)
    MsgBox NomTS.ListRows.Count
    With NomTS 'avec la TS
        .Sort.SortFields.Clear 'on supprime les tris actifs
        .Sort.SortFields.Add2 Key:=.ListColumns(ColTri).Range, SortOn:=xlSortOnValues, Order:=Ordre, DataOption:=xlSortTextAsNumbers 'on créé la clé de tri sur la colonne "ColTri" dans l'ordre "Ordre"
        With .Sort 'on applique le tri
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End With
End Sub
 
étrange..
est ce que il y a plus d'une ligne à trier??
pour le savoir
remplace la macro par celle-ci

VB:
Sub TriTS(NomTS As ListObject, ColTri As Integer, Ordre As Integer)
    MsgBox NomTS.ListRows.Count
    With NomTS 'avec la TS
        .Sort.SortFields.Clear 'on supprime les tris actifs
        .Sort.SortFields.Add2 Key:=.ListColumns(ColTri).Range, SortOn:=xlSortOnValues, Order:=Ordre, DataOption:=xlSortTextAsNumbers 'on créé la clé de tri sur la colonne "ColTri" dans l'ordre "Ordre"
        With .Sort 'on applique le tri
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End With
End Sub
Le macro ne marche pas, l'erreur se trouve ".Sort.SortFields.Add2 Key:=.ListColumns(ColTri).Range, SortOn:=xlSortOnValues, Order:=Ordre, DataOption:=xlSortTextAsNumbers 'on créé la clé de tri sur la colonne "ColTri" dans l'ordre "Ordre"
 
Vu que ca fonctionne bien sur "mon fichier" celui que je t'ai posté avec les macros.. je vois pas ce que tu as pu changer..
tu as bien les 3 TS ?
dans la feuille Base: t_Base (avec 5 colonnes: A:E)
dans la feuille 'Activité": t_Activité (8 colonnes B:I) et t_Budget (8 colonnes K:R) ?
 
Vu que ca fonctionne bien sur "mon fichier" celui que je t'ai posté avec les macros.. je vois pas ce que tu as pu changer..
tu as bien les 3 TS ?
dans la feuille Base: t_Base (avec 5 colonnes: A:E)
dans la feuille 'Activité": t_Activité (8 colonnes B:I) et t_Budget (8 colonnes K:R) ?
Oui, je vérifie: t_base, t_activité et t_budget respectent les colonnes. Vu que les noms des tableaux sont dans la VBA, alors j'ai rien touché
 
un truc qui me vient..
dans ta feuille base, la colonne Année n'est pas formatée correctemenent.. les années sont du texte==> tu dois avoir un losange à gauche qui t'indique une erreur==> selectionne la colonne entière, losange, convertir en nombre

.. peut etre ca..?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour