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

boucle FOR ... EACH d'effacement

5 réponses
Avatar
Caribou
Bonsoir à tous,
J'ai dans ma feuille Excel des zones de texte toutes nommées "toto1"

Je voudrais en lançant la macro les effacer toutes.
Je n'ai pas trouvé d'autre idée qu'une boucle FOR ... EACH (mais je suis
ouvert à toute suggestion plus simple !)

Toutefois connaissant peu la structure FOR EACH, je n'arrive pas à trouver
le script magique
Ca devrait ressembler à quelque chose comme :

For Each ActiveSheet.Shapes In ActiveSheet
If ActiveSheet.Shapes.Name = "toto1" Then
ActiveSheet.Shapes.Range("toto1").Select
Selection.Delete
Exit For

Qui aurait la bonté de me corriger ce script bancal ?

Merci !


--- Site Perso : http://anthop.free.fr ---

5 réponses

Avatar
Papyty
Bonjour @ tous et à Caribou :
Je voudrais en lançant la macro les effacer toutes.
Je n'ai pas trouvé d'autre idée qu'une boucle FOR ... EACH (mais je suis
ouvert à toute suggestion plus simple !)


A tester
Sub test()
For Each sShapes In ActiveSheet.Shapes
If sShapes.Name = "toto1" Then
ActiveSheet.Shapes.Range("toto1").Delete
End If
Next
End Sub

Est ce que ça convien?
--
@+
Thierry
27/12/2003 23:45:03

Avatar
Papyty
Bonjour @ tous et à Caribou :
J'ai dans ma feuille Excel des zones de texte toutes nommées "toto1"


J'ai répondu un peu vite, tu ne devrais pouvoir nommer qu'une zone de texte
toto1.
donc ActiveSheet.Shapes.Range("toto1").Delete suffit ;-)))
--
@+
Thierry
27/12/2003 23:52:56

Avatar
Caribou
MA-GNI-FIQUE !!!

Merci bcp !

Zou, je me replonge dans mon Excel !


"Papyty" a écrit dans le message de
news:18vs5udz7z49s.rx9mb0fewj6q$
Bonjour @ tous et à Caribou :
Je voudrais en lançant la macro les effacer toutes.
Je n'ai pas trouvé d'autre idée qu'une boucle FOR ... EACH (mais je suis
ouvert à toute suggestion plus simple !)


A tester
Sub test()
For Each sShapes In ActiveSheet.Shapes
If sShapes.Name = "toto1" Then
ActiveSheet.Shapes.Range("toto1").Delete
End If
Next
End Sub

Est ce que ça convien?
--
@+
Thierry
27/12/2003 23:45:03



Avatar
Caribou
non, car dans ce cas l'effacement se fait shape par shape en commençant par
la plus ancienne créée sous ce nom

Donc ta macro était parfaite ! ;o)


"Papyty" a écrit dans le message de
news:650i9mpoece3$.64b0ihohii5j$
Bonjour @ tous et à Caribou :
J'ai dans ma feuille Excel des zones de texte toutes nommées "toto1"


J'ai répondu un peu vite, tu ne devrais pouvoir nommer qu'une zone de
texte

toto1.
donc ActiveSheet.Shapes.Range("toto1").Delete suffit ;-)))
--
@+
Thierry
27/12/2003 23:52:56



Avatar
Jacquouille
Bonsoir
sub effacer_toto()
For each c in range machin
if [c] = "toto" then
[c] = ""
end if
next
end sub
ESKE cela irait ?
PS je suis peu familier du Grand Breton. alors, veuillez excuser la
gourance


--
Jacquouille conseille : http://www.excelabo.net


"Papyty" a écrit dans le message news:
650i9mpoece3$.64b0ihohii5j$
Bonjour @ tous et à Caribou :
J'ai dans ma feuille Excel des zones de texte toutes nommées "toto1"


J'ai répondu un peu vite, tu ne devrais pouvoir nommer qu'une zone de
texte

toto1.
donc ActiveSheet.Shapes.Range("toto1").Delete suffit ;-)))
--
@+
Thierry
27/12/2003 23:52:56