Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Supprimer #N/A

12 réponses
Avatar
JulieH
Bonjour à toutes et tous,

Dans une formule matricielle (INDEX, EQUIV ... validée avec Ctrl + Maj
+ Entrée), je n'ai pas réussi à intégrer "Si(ESTNA...." pour supprimer
les #N/A.

J'ai donc essayé de contourner le problème en créant une boucle pour
les éliminer tous avec la Macro suivante :

Application.ScreenUpdating = False
Dim cellules
For Each cellules In Range("G7:S14")
If CVErr(xlErrNA) = cellules Then
cellules = ""
End If
Next cellules


Cela ne fonctionne pas : Erreur d'execution 13 - Incompatibilité de
type sur la ligne If ..... then.
J'ai l'impression que c'est la boucle qui ne fonctionne pas (je ne suis
pas spécialiste de ces fameuses boucles même si j'ai testé plusieurs
arguments de Déclaration) car cela fonctionne si je travaille cellule
par cellule. Par exemple, la macro suivante est OK :

If CVErr(xlErrNA) = [B7] Then
[B7] = ""
End If


Quelqu'un peut-il m'aider ? Merci d'avance.

Julie

2 réponses

1 2
Avatar
michdenis
J'oubliais de mentionner que la ligne de code proposée doit être
procéder de celle-ci : On error resume next car lorsqu'il n'y a
pas au moins une cellule correspondante, la méthode
"SpecialCells" génère une erreur

Tu remplaces D1:D10 par l'adresse de la plage de cellules concernées.

Range("D1:D10").SpecialCells(xlCellTypeFormulas, xlErrors) = ""
Avatar
JulieH
Merci beaucoup pour l'aide. Cela fonctionne.

Bon week end

Julie

michdenis a écrit :
Moi, je pensais que tu voulais enlever les NA directement
dans tes formules de la feuille...

En VBA, as-tu essayé ceci :

Tu remplaces D1:D10 par l'adresse de la plage de cellules concernées.

Range("D1:D10").SpecialCells(xlCellTypeFormulas, xlErrors) = ""




"JulieH" a écrit dans le message de groupe de discussion :

Bonjour,

Je n'ai pas pu répondre hier soir mais je te remercie de continuer à
t'intéresser. Je vais essayer de tout reprendre à zéro avec la formule
pour voir ce qui ne fonctionne pas chez moi. Mais je suis surprise étant
donné que tout fonctionne parfaitement lorsque je me contente de garder
les NA.

En ce qui concerne la dernière question :
- J'ai une feuille intermédiaire dans laquelle il y a le cadre et les
formules.
- La Macro copie les données "Femll" dans ce cadre et récupère les infos
(en valeurs) sur une autre feuille.
- A ce moment il y a les NA que je n'ai pas réussi à enlever avec la
formule (cf ma question).
- Pour régler le problème, j'ai pensé faire une boucle qui passe en
revue les cellules concernées et efface les NA.
- La formule trouvée "If CVErr(xlErrNA) = ... Then" fonctionne lorsque
je l'utilise cellule par cellule mais ne fonctionne pas lorsque je
l'utilise en boucle. D'où LA question de mon premier message.

Je ne sais pas si c'est plus clair, il faudrait que je passe un fichier
mais pour cela il faut que je simplifie tout et c'est un peu compliqué.

Julie



michdenis a écrit :
Et bien, la formule que je t'ai donnée fonctionnait bien !
et même en matricielle.

Tu utilises des plages nommées dans ta formule. Es-tu
certaine que celles-ci sont de même dimension (même
nombre de lignes) ?

Tu parles de boucle... es-ce que tu utilises la formule
directement dans la feuille de calcul ou dans une
procédure VBA ?



"JulieH" a écrit dans le message de groupe de
discussion : #
Merci pour continuer à suivre le problème.

J'avais bien sûr testé cette formule et je viens de le refaire. Elle ne
donne aucun des résultats escomptés même quand ce n'est pas NA. Je
n'arrive pas non plus à la mettre en matricielle.

Alors que ma formule précédente fonctionne avec Ctrl + Maj + Entrée :
=SI($B7="";"";SI($A7=G$6;"";INDEX(Index_I;EQUIV($B7&G$6;Femll&Groupe;0))))

Je reviens donc à ma première question : Y-a-t-il quelques chose dans
ma boucle qui explique l'erreur 13 ?

Julie


michdenis a écrit :
Cette formule devrait fonctionner pour enlever les NA

=SI($B7="";"";SI($A7=G$6;"";SI(ESTNA(INDEX(Index_I;EQUIV($B7&G$6;Femll&Groupe;0)));"";INDEX(Index_I;EQUIV($B7&G$6;Femll&Groupe;0)))))




"JulieH" a écrit dans le message de groupe de
discussion :
Bonjour à tous et merci pour vos réponses,

Actuellement, la formule est la suivante :
=SI($B7="";"";SI($A7=G$6;"";INDEX(Index_I;EQUIV($B7&G$6;Femll&Groupe;0))))
avec validation par Ctrl + Maj + Entrée.
Si j'ajoute Si(ESTNA... ou ESTERREUR comme indiqué, je ne peux plus
mettre en matricielle.

En revanche, la macro fait une copie en valeur et il est possible
d'effacer cette valeur par macro. D'ailleurs, si je prends une seule
cellule, la macro suivante fonctionne.

If CVErr(xlErrNA) = [B7] Then
[B7] = ""
End if

Julie



JB a écrit :
Bonjour,

Si la formule matricielle est écrite dans un champ, on ne peut pas
vider des cellules de ce champ.
Il faudrait voir la formule.

JB
http://boisgontierjacques.free.fr/
On 23 jan, 13:17, JulieH wrote:
Bonjour à toutes et tous,

Dans une formule matricielle (INDEX, EQUIV ... validée avec Ctrl + Maj
+ Entrée), je n'ai pas réussi à intégrer "Si(ESTNA...." pour supprimer
les #N/A.

J'ai donc essayé de contourner le problème en créant une boucle pour
les éliminer tous avec la Macro suivante :

Application.ScreenUpdating = False
Dim cellules
For Each cellules In Range("G7:S14")
If CVErr(xlErrNA) = cellules Then
cellules = ""
End If
Next cellules

Cela ne fonctionne pas : Erreur d'execution 13 - Incompatibilité de
type sur la ligne If ..... then.
J'ai l'impression que c'est la boucle qui ne fonctionne pas (je ne suis
pas spécialiste de ces fameuses boucles même si j'ai testé plusieurs
arguments de Déclaration) car cela fonctionne si je travaille cellule
par cellule. Par exemple, la macro suivante est OK :

If CVErr(xlErrNA) = [B7] Then
[B7] = ""
End If

Quelqu'un peut-il m'aider ? Merci d'avance.

Julie










1 2