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

VBA pour remplir une plage sous conditions

12 réponses
Avatar
M.
Bonjour,

il y a quelques mois déjà j'avais reçu de l'aide pour remplir une plage
avec des 3, sous deux conditions : que la plage soit vide et que la
cellule D1 contienne "f".

On m'avait donné entre autre cette instruction qui semblait marcher :

If [count(plage)] = 0 And [$D$1] = "f" Then [plage] = 3

En y regardant de plus près ça ne marche pas bien : la plage se remplit
bien de 3, mais cela même si elle était déjà pleine de nombres, qui sont
tous perdus.

Je ne vois pas quoi faire. La plage est dynamique, définie avec DECALER
dans Insertion/Nom/Definir;

Quelqu'un a une autre idée pour remplacer l'instruction ci-dessus ?

merci de votre aide

Fred

10 réponses

1 2
Avatar
AV
il y a quelques mois déjà j'avais reçu de l'aide pour remplir une plage
avec des 3, sous deux conditions : que la plage soit vide et que la
cellule D1 contienne "f".
If [count(plage)] = 0 And [$D$1] = "f" Then [plage] = 3


Je me questionne sur [count(plage)] .....
Ca compte le nbre de valeurs numériques de "plage" ...
Intérêt ?

Pour remplir, avec la valeur 3, les cellules de la plage nommée "plage" si elles
sont vides et si D1 ="f", essaye ça :

On Error Resume Next
If [D1] = "f" Then [plage].SpecialCells(xlCellTypeBlanks) = 3

AV

Avatar
M.
"AV" a dit :

Je me questionne sur [count(plage)] ....


merci de m'aider...

Ca compte le nbre de valeurs numériques de "plage" ...


Cela aurait dû marcher, donc... (avec peut-être interférence selon
l'option choisie pour l'affichage des valeurs zéro ?).

If [D1] = "f" Then [plage].SpecialCells(xlCellTypeBlanks) = 3


Excel dit qu'il ne comprend pas le SpecialCells; (peut-être parce que
c'est Excel 97 ?).

Fred

Avatar
AV
Cela aurait dû marcher, donc... (avec peut-être interférence selon
l'option choisie pour l'affichage des valeurs zéro ?).
** Si tu as choisi cette option, les cellules contenant la valeur 0 appaitront

comme vides mais comme elles ne sont réellemnt pas, la macro ne leur affectera
pas la valeur 0 !

Excel dit qu'il ne comprend pas le SpecialCells;
(peut-être parce que c'est Excel 97 ?).
** Non car la méthode existait déjà sous XL97 (sr2)


** Autre possiblité de smilblick : les cellules sont "faussement vides"
Ex. elles contiennent une formule conditionnelle qui peut renvoyer ""
=SI(x = y;""; blabla)

AV

Avatar
M.
"AV" a dit :

** Si tu as choisi cette option, les cellules contenant la valeur 0 appaitront
comme vides mais comme elles ne sont réellemnt pas, la macro ne leur affectera
pas la valeur 0 !


En fait les cellules sont réellement vides et là y a pas de problème, la
macro les remplit de 3; le problème c'est quand les cellules sont pleines
: elle le fait aussi au lieu de s'abstenir !

** Autre possiblité de smilblick : les cellules sont "faussement vides"
Ex. elles contiennent une formule conditionnelle qui peut renvoyer ""
=SI(x = y;""; blabla)


Non elles contiennent soit rien soit des entiers entre 1 et 10.


If [D1] = "f" Then [plage].SpecialCells(xlCellTypeBlanks) = 3

Avatar
AV
En fait les cellules sont réellement vides et là y a pas de problème, la
macro les remplit de 3; le problème c'est quand les cellules sont pleines
: elle le fait aussi au lieu de s'abstenir !


Cette erreur est impossible à reproduire chez moi quelle que soit la version XL
utilisée !
(97 et +)

AV

Avatar
M.
"AV" a dit :

Cette erreur est impossible à reproduire chez moi quelle que soit la version XL
utilisée !


Merci beaucoup d'avoir essayé tout ça. Les deux erreurs - avec Count et
avec SpecialCells.Count - semblent venir de cette fonction Count, pas bien
reconnue (mais c'est peut-être parce que j'ai fait une erreur grossière
dans l'agencement des instructions, je n'ai pas encore compris grand chose
au langage de programmation, et toujours pas trouvé un bouquin pour m'y
mettre);

Milles mercis !

Fred

Avatar
Philippe.R
Bonsoir Fred M,
Il y a une bibliographie sur la FAQ :
http://dj.joss.free.fr/faq.htm
Coin du lecteur
--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002


"M." +doo.fr> a écrit dans le message de
news:
"AV" a dit :

Cette erreur est impossible à reproduire chez moi quelle que soit la version XL
utilisée !


Merci beaucoup [...] je n'ai pas encore compris grand chose
au langage de programmation, et toujours pas trouvé un bouquin pour m'y
mettre);

Milles mercis !

Fred



Avatar
M.
"Philippe.R" a dit :

Il y a une bibliographie sur la FAQ :


Merci beaucoup; je retiens qu'il faut que je trouve un livre de
Walkenbach (ou quelque chose comme ça); Celui que j'ai de Reed Jakobson
m'ayant laissé sur ma faim;

Fred

Avatar
M.
"AV" a dit :

Cette erreur est impossible à reproduire chez moi quelle que soit la version XL
utilisée !


Bonjour,

Ayant pu travailler sur une machine avec autre version d'excel (2000 et
non 97), j'ai trouvé quelques pistes.

J'ai constaté que sue cet excel 2000 le SpecialCells reconnaissant les
cellules vides (CelltypeBlanks) fonctionnait (mon excel 97 qui ne le
comprenait pas n'est peut-être pas à jour de quelque correctif). Par
contre, le problème avec la fonction Count lui était toujours là : elle
donnait le nombre total de cellules de la plage sans distinguer selon
qu'elles aient ou non un contenu.

Fred

Avatar
Frédéric Sigonneau
Bonjour,

Par
contre, le problème avec la fonction Count lui était toujours là : elle
donnait le nombre total de cellules de la plage sans distinguer selon
qu'elles aient ou non un contenu.


Je ne dirais pas que c'est un problème à proprement parler puisque c'est ce qui
est attendu de Count (utilisé avec une plage de cellules) de fournir le nombre
total des cellules de la plage...
Pour dénombrer uniquement les cellules qui contiennent quelque chose tu peux
utiliser CountA :

MsgBox Application.CountA(Range("A1:D100"))

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !

1 2