Formule matricielle en VBA

Erreur 424 c'est Objet manquant, la plage nommée n'a pas été trouvée... L'erreur 1004 se produisant dans le même contexte indique que la plage était vide, donc non définie, bien que nommée.

Normalement les plages ne sont jamais vides, et quand on les vide c'est pour les remplir à nouveau. En cas d'accident ou au démarrage il suffit de taper une lettre sur la première ligne pour qu'elle ne soit plus vide, et les automatismes rétablissent la situation.

Une petite modification permet de garantir que même en cas de plantage après vidage, les plages qui peuvent se trouver dans cette situation seront toujours définies :

[Base].Offset(1, 0).ClearContents

dans une procédure, et :

[Site].Offset(1, 0).ClearContents

dans l'autre.

En décalant l'effacement d'une ligne, la plage sera toujours définie.

(L'effacement est nécessaire pour le cas où les listes diminuent de longueur. On pourrait laisser demeurer des données anciennes devenues caduques.)

Il n'y a cependant aucune raison qu'une erreur 424 se produise si la plage était existante et bien référencée dans le classeur.

Mais tu n'indiques pas quelle manipulation tu as opérée avant, Il est donc probable qu'elle puisse être à l'origine de l'erreur.

Cordialement

J'ai sélectionné les cellules remplies de la dernière ligne et ai tiré vers le bas (copie avec incrémentation si chiffre).

Sinon, en remplaçant par base par site dans le fichier que tu m'as envoyé, même erreur, même ligne.

Sur quelle feuille donc ?

Si c'est sur des plages nommées, c'est à éviter.

Sur la feuille 'Listes', celle qui évoluera au fil du temps.

Je viens de le faire. Sans erreur.

Ville10 s'est rajouté dans les 2 listes !

Ce n'est donc pas ce qui a provoqué l'erreur.

Sur mon fichier le nom géré SiteSalle semble être le problème. Il est défini par une fonction décaler à partir du nom géré Base.

Je ne crois pas. SiteSalle est la réduction de Base à une colonne et sert à définir et dimensionner la 2e liste déroulante (voir formule).

Mea culpa.

Bizarrement, une ligne intermédiaire ne s'est pas copiée

[Site].ClearContents

Forcément, maintenant, ça va mieux.

Mille mercis

OK !

Je rappelle ma recommandation précédente :

[Site].Offset(1, 0).ClearContents

et :

[Base].Offset(1, 0).ClearContents

Précaution qui n'est pas inutile.

Cordialement

D'accord, je change site en base.

Edit: j'en ai profité pour ajouter le Offset, mais là, ça replante.

Erreur d'exécution 1004 :

Cette commande requiert au moins deux lignes de données sources.

Vous ne pouvez pas l'utiliser sur une seule ligne de données. Essayez la méthode suivante :

-Si vous utilisez un filtre avancé, sélectionnez une plage de cellules qui contient au moins deux lignes de données. Puis cliquez à nouveau sur la commande Filtre élaboré.

Et ça plante sur la ligne :

[SiteSalle].AdvancedFilter Action:=xlFilterCopy, copytorange:=[E2], _
                 unique:=True

D'accord, je change site en base.

Pas ça du tout !!!

Site reste Site, et Base Base.

le Offset est à ajouter sur 2 lignes différentes, dans 2 procédures différentes.

Le premier (Site) dans la proc. Change de Tables.

Le second (Base) dans la proc. Deactivate de Liste.

Super !!!!!!!!!!!!!!!!!!!!!!!

Merci

Rechercher des sujets similaires à "formule matricielle vba"