OVH Cloud OVH Cloud

Agir sur les "freeform" en VBA

4 réponses
Avatar
Patrick BASTARD
Bonsoir, toutes et tous.

J'ai besoin d'un sérieux coup de main, car les recherches effectuées ne
rapportent pas beaucoup de résultats sur ce sujet (3 sur Google group...)

*Mes données*
La carte d'un département découpé par code postal (une "freeform" par code
postal .
Un tableau avec, entre autres, les colonnes suivantes :
1° Code postal sur 5 caractères numériques (Le tableau est trié sur cette
colonne),
2° Libellé du bureau distributeur,
3° N° actuel de la form ("Freeform 98" par exemple) généré par l'appli.
4°... etc

*Mon premier souhait*
Renommer de manière logique les "Freeform" : la "Freeform 45 "(col 3) qui
correspond à Dijon (Col 2) devrait être renommée 21000 (Col 1)
J'ai trouvé le code (en fin de ce post) de Denis, mais n'arrive pas à
l'adapter avec index/equiv en VBA.

*Mon deuxième souhait *
Sélectionner un ou plusieurs codes postaux (sélection continue ou multiple)
dans le tableau (Col 1), et colorer simultanément *le fond de la cellule et
de la forme* correspondante. Je crois savoir qu'il n'y a pas de proc.
évenementielle qui détecte un changement de format, alors un bouton fera
l'affaire.

Je sais qu'en ce samedi soir, j'en demande beaucoup, mais si l'un(e) d'entre
vous pouvait me fournir au moins un lien, je lui en serais déjà très
reconnaissant.

Bon WE à tous.

PS : le code de Michdenis
-gloire à Lui-
'---------------------------
Sub RenommerFreeForm()
Dim S As MsoShapeType
S = msoFreeform


For Each sh In ActiveSheet.Shapes
If sh.Type = S Then
a = a + 1
sh.Name = "Toto" & a
End If
Next

End Sub


--
Bien amicordialement,
P. Bastard

4 réponses

Avatar
Modeste
Bonsour® Patrick BASTARD avec ferveur ;o))) vous nous disiez :

*Mes données*
La carte d'un département découpé par code postal (une "freeform" par code
postal .
Un tableau avec, entre autres, les colonnes suivantes :
1° Code postal sur 5 caractères numériques (Le tableau est trié sur cette
colonne),
2° Libellé du bureau distributeur,
3° N° actuel de la form ("Freeform 98" par exemple) généré par l'appli.
4°... etc

*Mon premier souhait*
Renommer de manière logique les "Freeform" : la "Freeform 45 "(col 3) qui
correspond à Dijon (Col 2) devrait être renommée 21000 (Col 1)


en prenant le probleme differement ;o)))

Sub renommer_freeform()
'----- adapter ici le nom de la feuille contenant les données
Set DD = ActiveWorkbook.Sheets("Mes données")

'----- adapter ici le nom de la feuille contenant les freeform
Set FF = ActiveWorkbook.Sheets("mes freeForm")

'----- adapter ici la ligne de depart en cas de ligne d'entete
ligne = 1 ' <==2 si entete

'----- sous réserve que la feuille "Mes données" recense tout les freeforms
!!!!
'----- cette boucle ne marchera qu'une fois car le nom de la freeform aura
alors été changé
While Not IsEmpty(DD.Cells(ligne, 1))
FF.Shapes(DD.Cells(ligne, 3)).Name = Format(DD.Cells(ligne, 1), "00000")
Application.StatusBar = "traitement bureau distributeur " &
DD.Cells(ligne, 2)
ligne = ligne + 1
Wend

End Sub



--
;o)))
@+

Les news à la source !!!
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :http://www.excelabo.net
http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr

Avatar
Patrick BASTARD
Bonsoir, *Modeste*

Mon premier souhait semble s'être réalisé, et plus vite que je ne
l'espérais.

Ce qui tend à prouver que
"à toute âme bien née, le nombre des années n'attente pas à la valeur"

Un Grand MERCI, *Modeste*

--
Bien amicordialement,
P. Bastard



Bonsour® Patrick BASTARD avec ferveur ;o))) vous nous disiez :

*Mes données*
La carte d'un département découpé par code postal (une "freeform"
par code postal .
Un tableau avec, entre autres, les colonnes suivantes :
1° Code postal sur 5 caractères numériques (Le tableau est trié sur
cette colonne),
2° Libellé du bureau distributeur,
3° N° actuel de la form ("Freeform 98" par exemple) généré par
l'appli. 4°... etc

*Mon premier souhait*
Renommer de manière logique les "Freeform" : la "Freeform 45 "(col
3) qui correspond à Dijon (Col 2) devrait être renommée 21000 (Col 1)


en prenant le probleme differement ;o)))

Sub renommer_freeform()
'----- adapter ici le nom de la feuille contenant les données
Set DD = ActiveWorkbook.Sheets("Mes données")

'----- adapter ici le nom de la feuille contenant les freeform
Set FF = ActiveWorkbook.Sheets("mes freeForm")

'----- adapter ici la ligne de depart en cas de ligne d'entete
ligne = 1 ' <==2 si entete

'----- sous réserve que la feuille "Mes données" recense tout les
freeforms !!!!
'----- cette boucle ne marchera qu'une fois car le nom de la
freeform aura alors été changé
While Not IsEmpty(DD.Cells(ligne, 1))
FF.Shapes(DD.Cells(ligne, 3)).Name = Format(DD.Cells(ligne, 1),
"00000") Application.StatusBar = "traitement bureau distributeur "
& DD.Cells(ligne, 2)
ligne = ligne + 1
Wend

End Sub



Avatar
Modeste
Bonsour® Patrick BASTARD avec ferveur ;o))) vous nous disiez :

Bonsoir, *Modeste*

Mon premier souhait semble s'être réalisé


;o)))
non testé ...
mais le deuxieme souhait devrait pouvoir se réaliser comme ceci
for each cellule in selection
'----la couleur pourra éventuellement etre issue d'un colorPicker (voir
excelabo ou jwalk)
cellule.interior.color=vbblue
sheets("freeforms").drawingobjects(cellule.text).interior.color=vbblue
next

private joke :
nul besoin de faire appel à Albert, ni de faire l'autruche ;o)))
n'est-ce pas JPS ???

--
;o)))
@+

Les news à la source !!!
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :http://www.excelabo.net
http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr

Avatar
jps
private joke captured 5/5
bon dimanche (ou mieux : bunona domenica.....private joke too!!)
jps

"Modeste" a écrit dans le message de news:

private joke :
nul besoin de faire appel à Albert, ni de faire l'autruche ;o)))
n'est-ce pas JPS ???

--
;o)))
@+

Les news à la source !!!
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :http://www.excelabo.net
http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr