XL 2021 #PROPAGATION!

  • Initiateur de la discussion Initiateur de la discussion fenec
  • Date de début Date de début

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 !

fenec

XLDnaute Impliqué
Bonjour le forum,

Je viens une nouvelle fois vers vous car je ne comprends pas pourquoi j'obtiens une erreur de propagation quand je mets mon tableau de la feuille 2 en tableau structuré.

Je vous joint un fichier exemple de ma problématique,

D'avance merci pour l'explication que vous pourriez me donner sur cette erreur.

Cordialement,
Fenec.
 

Pièces jointes

Bonjour

C'est en général une mauvaise pratique de faire référence à d'autres cellules par une formule de simple égalité.

Là tu te réfères à un tableau complet :
  • =Tableau1 aurait suffit
  • ce type de formule, ne nécessitant de formule que sur une cellule unique, contrevient donc à la logique des tableaux structurés qui ont une formule identique dans TOUTES les cellules d'une colonne formulée. D’où l'erreur à la transformation en TS
 
Bonjour Fenec, Valtrase,
Sur XL2007 le message diffère, peut être une piste :

1745780300595.png

par contre si on supprime les formules matricielles, ça marche.
 

Pièces jointes

Bonsoir le forum, chris, Valtrase, sylvanu,

@chris,
J'ai essayé avec "Tableau1" et chez moi idem=> problème propagation

@Valtrase,
Le but de la manœuvre est en fait d'utiliser la liste du personnel dans différent onglet sans avoir à la recopier complètement

@sylvanu,
En effet en supprimant la formule matricielle cela fonctionne mais alors un autre problème se pose :
Si je rajoute de nouvelles personnes dans la liste du personnel mon tableau bien que structuré ne se met pas à jour.

Fenec.
 
Bonjour le forum, chris,

J'ai bien lu ta réponse et compris la différence avec un tableau structuré qui a besoin d'une formule dans toute une colonne.

Par contre je ne vois pas ou tu veux aller sans dupliquer le tableau et en n'utilisant pas de formules !!!

Pourrais tu m'éclairer sur cette possibilité s'il te plait ?

Cordialement,
Fenec.
 
Re,

En fait dans mon projet je souhaiterais à partir d'un tableau d'habilitation, récupéré le personnel en fonction de son habilitation dans plusieurs onglets pour en fonction de son (ces) habilitation et ainsi pourvoir gérer les périodes de chaque validité.

En espérant vous éclairez un peu plus,

PS: J'essaie de vous faire un fichier exemple au plus vite

Cordialement,
Fenec.
 
Bonsoir le forum,
Je reviens vers vous avec pas mal de retard pour vous présenter mon fichier avec quelque commentaire dans les différent onglets

Par conséquent :
@chris,
j'aimerais voir comment tu t'y prends pour :
On peut se référer par formule à un tableau de n'importe quel onglet sans le dupliquer.
Cordialement,
Fenec.
 

Pièces jointes

Bonjour fenec, chris,

Voyez la feuille "Index" du fichier joint.

Formule matricielle en B7 à propager sur B7:E11 :
Code:
=SIERREUR(INDEX(Tab_Habilitation;PETITE.VALEUR(SI((Tab_Habilitation[CACES]="X")+(Tab_Habilitation[Autorisation de conduite]="X");LIGNE(Tab_Habilitation)-LIGNE(Tab_Habilitation[#En-têtes]));LIGNE(A1));COLONNE(A1));"")
Sur Excel 21 je pense que la validation par Ctrl+Maj+Entrée n'est pas nécessaire.

A+
 

Pièces jointes

Bonjour fenec, le forum,

On peut aussi utiliser le filtre avancé piloté par ce code dans la feuille "VBA" :
VB:
Private Sub Worksheet_Activate()
Worksheet_Change [A1] 'lance la macro
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Dim source As Range, h&, critere As Range
Set source = [Tab_Habilitation].ListObject.Range 'tableau structuré
h = source.Rows.Count
Set critere = source.Parent.Cells(2, 1)
Application.ScreenUpdating = False
Application.EnableEvents = False
critere = "=OR(" & source(2, 5).Address(0, 0) & "=""X""," & source(2, 6).Address(0, 0) & "=""X"")"
With [Tableau1].Resize(, 4) 'tableau structuré
    .ClearContents 'RAZ
    If .Rows.Count + 1 < h Then .ListObject.Resize .ListObject.Range.Resize(h) 'redimensionne le tableau
    source.AdvancedFilter xlFilterCopy, critere(0).Resize(2), .Rows(0) 'filtre avancé copié
    On Error Resume Next 'si aucune SpecialCell
    .Resize(h - 1, 1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete 'supprime les lignes vides
End With
critere = ""
Application.EnableEvents = True
End Sub
A+
 

Pièces jointes

Dernière édition:
Pour tester j'ai recopié le tableau source B7:AA13 sur 21000 lignes, transféré ensuite sur 15000 lignes.

Les formules du post #12 se recalculent en 140 secondes.

La macro du post #13 s'exécute en [Edit] 0,28 seconde...
 
Dernière édition:
- 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

Discussions similaires

Réponses
18
Affichages
332
  • Question Question
Microsoft 365 format date
Réponses
3
Affichages
105
Retour