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

visite guidée

23 réponses
Avatar
sabatier
bonjour les damnés de la terre...
à la demande de denis du québec, je mets en place la visite de mes BO...afin
que mon offre attire toujours plus de monde (le forecast annonce pour 2005
un tout petit plus de visiteurs qu'à Eurodisney), j'ai pensé organisé aussi
un sightseeing de des procs au fil de mes divers modules en forme d'usine à
gaz...afin de laisser à mes visiteurs l'impression qu'ils ont été pris en
main par un vrai pro d'excel, j'ai donc besoin de remplacer tous les
Range("A12") par ce qui a rendu célèbre AV dans tout le Limousin, j'ai nommé
le fameux [A12]...au fait qu'elle était ma question? ah! oui j'y suis :
quelle proc pourrait procéder à ce remplacement sans tout casser le reste ;
si pour le [ ouvrant, cela ne doit pas être difficile à faire, je me pose
des questions pour le ] fermant car remplacer ") par ] va causer de gros
dégâts dans les textes des boxes quelquechose... sauf à détecter la présence
d'un chiffre juste avant le " et à condition qu'aucun des textes ne finisse
par un chiffre (on peut toujours l'espérer)...
évidemment, comme l'a fait pour moi FS avec son Pense-bête en espagnol,
j'offre des royalties sur chaque entrée de visiteur à celle ou celui qui
pourra m'aider dans ce Rechercher/Remplacer...
merci d'avance
jps

10 réponses

1 2 3
Avatar
Daniel.M
Bonjour JPS,

Par curiosité, quelle est la raison de cette manipulation? :

La préférence accordée à une notation absconse?
L'évaluation plus lente de ladite expression?
La disparition de l'aide 'intellisense' dans le code?
Le désir inavoué de faire partie des incompris?

Salutations (ou End(3), comme tu veux), :-)

Daniel M.

"sabatier" wrote in message
news:
bonjour les damnés de la terre...
à la demande de denis du québec, je mets en place la visite de mes BO...afin
que mon offre attire toujours plus de monde (le forecast annonce pour 2005
un tout petit plus de visiteurs qu'à Eurodisney), j'ai pensé organisé aussi
un sightseeing de des procs au fil de mes divers modules en forme d'usine à
gaz...afin de laisser à mes visiteurs l'impression qu'ils ont été pris en
main par un vrai pro d'excel, j'ai donc besoin de remplacer tous les
Range("A12") par ce qui a rendu célèbre AV dans tout le Limousin, j'ai nommé
le fameux [A12]...au fait qu'elle était ma question? ah! oui j'y suis :
quelle proc pourrait procéder à ce remplacement sans tout casser le reste ;
si pour le [ ouvrant, cela ne doit pas être difficile à faire, je me pose
des questions pour le ] fermant car remplacer ") par ] va causer de gros
dégâts dans les textes des boxes quelquechose... sauf à détecter la présence
d'un chiffre juste avant le " et à condition qu'aucun des textes ne finisse
par un chiffre (on peut toujours l'espérer)...
évidemment, comme l'a fait pour moi FS avec son Pense-bête en espagnol,
j'offre des royalties sur chaque entrée de visiteur à celle ou celui qui
pourra m'aider dans ce Rechercher/Remplacer...
merci d'avance
jps




Avatar
sabatier
tu me fais rire, daniel...
la raison est tellement bébête que je ne la vois pas au nombre de tes
hypothèses ; il s'agit tout benoîtement d'alléger les textes de mon usine à
gaz mai si tu me dis que c'est une grosse c.....ie, alors je laisse béton...
jps

"Daniel.M" a écrit dans le message de
news:
Bonjour JPS,

Par curiosité, quelle est la raison de cette manipulation? :

La préférence accordée à une notation absconse?
L'évaluation plus lente de ladite expression?
La disparition de l'aide 'intellisense' dans le code?
Le désir inavoué de faire partie des incompris?

Salutations (ou End(3), comme tu veux), :-)

Daniel M.

"sabatier" wrote in message
news:
bonjour les damnés de la terre...
à la demande de denis du québec, je mets en place la visite de mes
BO...afin


que mon offre attire toujours plus de monde (le forecast annonce pour
2005


un tout petit plus de visiteurs qu'à Eurodisney), j'ai pensé organisé
aussi


un sightseeing de des procs au fil de mes divers modules en forme
d'usine à


gaz...afin de laisser à mes visiteurs l'impression qu'ils ont été pris
en


main par un vrai pro d'excel, j'ai donc besoin de remplacer tous les
Range("A12") par ce qui a rendu célèbre AV dans tout le Limousin, j'ai
nommé


le fameux [A12]...au fait qu'elle était ma question? ah! oui j'y suis :
quelle proc pourrait procéder à ce remplacement sans tout casser le
reste ;


si pour le [ ouvrant, cela ne doit pas être difficile à faire, je me
pose


des questions pour le ] fermant car remplacer ") par ] va causer de gros
dégâts dans les textes des boxes quelquechose... sauf à détecter la
présence


d'un chiffre juste avant le " et à condition qu'aucun des textes ne
finisse


par un chiffre (on peut toujours l'espérer)...
évidemment, comme l'a fait pour moi FS avec son Pense-bête en espagnol,
j'offre des royalties sur chaque entrée de visiteur à celle ou celui qui
pourra m'aider dans ce Rechercher/Remplacer...
merci d'avance
jps








Avatar
Daniel.M
Salut Jean-Paul,

tu me fais rire, daniel...


mais c'est surtout pour faire s'exclamer d'autres... :-)


la raison est tellement bébête que je ne la vois pas au nombre de tes
hypothèses ; il s'agit tout benoîtement d'alléger les textes de mon usine à
gaz mai si tu me dis que c'est une grosse c.....ie, alors je laisse béton...


Grosse c.....ie, c'est trop fort.
On a tous nos préférences et je ne te cacherai pas que je NE ferais PAS cette
manip.

Cependant, si tu es toujours intéressé, tu pourras utiliser la fonction
CodeObfuscator() suivante, qui tire profit de la SUBST() réalisée par Harlan
Grove.
Tu lui passes l'ensemble de ton code en paramètre et il te le traduira.

Elle ignore sciemment les Unions -- Range("AB12","T10") -- mais tient compte des
multiples occurences dans une même expression --
Range("T10").CurrentRegion.Range("C1")

Il est très probable qu'elle ne couvre pas l'ensemble des cas mais tu me diras
lesquels :-)


' *****************************************
' Daniel M. Août 2004
' Usage : nouveauCode = CodeObfuscator(Texte_ancienCode)
'
Public Function CodeObfuscator(s$) As String
CodeObfuscator = Subst(s, "Range(""([^,]*?)"")", "[$1]")
End Function


' *****************************************
' Author : Harlan Grove
'Similar to Excel's SUBSTITUTE but using VBScript's perl-like regexps
'Required:
' orig_text - string to search through,
' match_pat - regexp to find,
' replace_pat - replacement pattern
'Optional:
' instance - which matched substring to replace or 0 for all (default)
'-----------------------------------------
Function Subst(orig_text As String, _
match_pat As String, _
replace_pat As String, _
Optional instance As Variant) As Variant
'-----------------------------------------
Dim regEx As Object, Matches As Object, M As Object

If IsMissing(instance) Then
instance = 0#

ElseIf TypeName(instance) <> "Double" Then
Subst = CVErr(xlErrValue) 'invalid instance type
instance = -1#

ElseIf CDbl(instance) <= 0.5 Then
Subst = CVErr(xlErrNum) 'invalid instance value
instance = -1#

Else
instance = Int(instance + 0.5)

End If

If instance = -1# Then Exit Function 'do nothing quickly

Set regEx = CreateObject("vbscript.regexp")
regEx.Pattern = match_pat
regEx.Global = True

If instance = 0# Then
regEx.Global = True
'Debug.Print orig_text
'Debug.Print replace_pat

Subst = regEx.Replace(orig_text, replace_pat)

Else
Set Matches = regEx.Execute(orig_text)

If instance > Matches.Count Then
Subst = orig_text 'matchnum out of bounds - do nothing

Else
Set M = Matches.Item(instance - 1)
Subst = Left(orig_text, M.FirstIndex) & _
regEx.Replace(M.Value, replace_pat) & _
Right(orig_text, Len(orig_text) - M.FirstIndex - M.Length)

End If

End If

End Function

Avatar
sabatier
merci, daniel, pour ce tuyau en forme de Function...
je voudrais bien, malgré ton conseil négaitf, tenter le coup pour voir le
résultat produit mais n'étant pas un crack de la Function, je ne vois pas
comment lui passer mon code en paramètre ; j'ai tenté de le copier dans un
classeur et ai appelé la Function dans une cellule et sélectionner la plage
où se trouvait le code mais ça n'a pas marché...
si, dans ta bonté au caractère asymptotique, tu peux encore me dire comment
faire....je t'en saurais gré jusqu'à plus soif...
à +
jps

"Daniel.M" a écrit dans le message de
news:%
Salut Jean-Paul,

tu me fais rire, daniel...


mais c'est surtout pour faire s'exclamer d'autres... :-)


la raison est tellement bébête que je ne la vois pas au nombre de tes
hypothèses ; il s'agit tout benoîtement d'alléger les textes de mon
usine à


gaz mai si tu me dis que c'est une grosse c.....ie, alors je laisse
béton...



Grosse c.....ie, c'est trop fort.
On a tous nos préférences et je ne te cacherai pas que je NE ferais PAS
cette

manip.

Cependant, si tu es toujours intéressé, tu pourras utiliser la fonction
CodeObfuscator() suivante, qui tire profit de la SUBST() réalisée par
Harlan

Grove.
Tu lui passes l'ensemble de ton code en paramètre et il te le traduira.

Elle ignore sciemment les Unions -- Range("AB12","T10") -- mais tient
compte des

multiples occurences dans une même expression --
Range("T10").CurrentRegion.Range("C1")

Il est très probable qu'elle ne couvre pas l'ensemble des cas mais tu me
diras

lesquels :-)


' *****************************************
' Daniel M. Août 2004
' Usage : nouveauCode = CodeObfuscator(Texte_ancienCode)
'
Public Function CodeObfuscator(s$) As String
CodeObfuscator = Subst(s, "Range(""([^,]*?)"")", "[$1]")
End Function


' *****************************************
' Author : Harlan Grove
'Similar to Excel's SUBSTITUTE but using VBScript's perl-like regexps
'Required:
' orig_text - string to search through,
' match_pat - regexp to find,
' replace_pat - replacement pattern
'Optional:
' instance - which matched substring to replace or 0 for all (default)
'-----------------------------------------
Function Subst(orig_text As String, _
match_pat As String, _
replace_pat As String, _
Optional instance As Variant) As Variant
'-----------------------------------------
Dim regEx As Object, Matches As Object, M As Object

If IsMissing(instance) Then
instance = 0#

ElseIf TypeName(instance) <> "Double" Then
Subst = CVErr(xlErrValue) 'invalid instance type
instance = -1#

ElseIf CDbl(instance) <= 0.5 Then
Subst = CVErr(xlErrNum) 'invalid instance value
instance = -1#

Else
instance = Int(instance + 0.5)

End If

If instance = -1# Then Exit Function 'do nothing quickly

Set regEx = CreateObject("vbscript.regexp")
regEx.Pattern = match_pat
regEx.Global = True

If instance = 0# Then
regEx.Global = True
'Debug.Print orig_text
'Debug.Print replace_pat

Subst = regEx.Replace(orig_text, replace_pat)

Else
Set Matches = regEx.Execute(orig_text)

If instance > Matches.Count Then
Subst = orig_text 'matchnum out of bounds - do nothing

Else
Set M = Matches.Item(instance - 1)
Subst = Left(orig_text, M.FirstIndex) & _
regEx.Replace(M.Value, replace_pat) & _
Right(orig_text, Len(orig_text) - M.FirstIndex - M.Length)

End If

End If

End Function





Avatar
Daniel.M
Jean-Paul,

Tu serais mieux avec cette version:

' Daniel M. Août 2004
' Usage : nouveauCode = CodeObfuscator(Texte_ancienCode)
'
Public Function CodeObfuscator(s$) As String
CodeObfuscator = Subst(s, "Range(""([^, &()]*?)"")", "[$1]")
End Function

Salutations,

Daniel M.
Avatar
michdenis
Bonjour Daniel,

Est-ce possible que tu tentes de noyer le poisson ? Ça va être difficile avec JPS, il ne supporte pas l'eau !

;-))


Je pensais que la fonction Rechercher-Remplacer de la barre des menus "Édition" de la fenêtre VBE aurait pu faire l'affaire


Rechercher : Range("A12")

Remplacer : [A12]

Avec l'option appropriée cochée :

procédure en cours ou module en cours ou le projet en cours


Salutations!



"Daniel.M" a écrit dans le message de news:%
Salut Jean-Paul,

tu me fais rire, daniel...


mais c'est surtout pour faire s'exclamer d'autres... :-)


la raison est tellement bébête que je ne la vois pas au nombre de tes
hypothèses ; il s'agit tout benoîtement d'alléger les textes de mon usine à
gaz mai si tu me dis que c'est une grosse c.....ie, alors je laisse béton...


Grosse c.....ie, c'est trop fort.
On a tous nos préférences et je ne te cacherai pas que je NE ferais PAS cette
manip.

Cependant, si tu es toujours intéressé, tu pourras utiliser la fonction
CodeObfuscator() suivante, qui tire profit de la SUBST() réalisée par Harlan
Grove.
Tu lui passes l'ensemble de ton code en paramètre et il te le traduira.

Elle ignore sciemment les Unions -- Range("AB12","T10") -- mais tient compte des
multiples occurences dans une même expression --
Range("T10").CurrentRegion.Range("C1")

Il est très probable qu'elle ne couvre pas l'ensemble des cas mais tu me diras
lesquels :-)


' *****************************************
' Daniel M. Août 2004
' Usage : nouveauCode = CodeObfuscator(Texte_ancienCode)
'
Public Function CodeObfuscator(s$) As String
CodeObfuscator = Subst(s, "Range(""([^,]*?)"")", "[$1]")
End Function


' *****************************************
' Author : Harlan Grove
'Similar to Excel's SUBSTITUTE but using VBScript's perl-like regexps
'Required:
' orig_text - string to search through,
' match_pat - regexp to find,
' replace_pat - replacement pattern
'Optional:
' instance - which matched substring to replace or 0 for all (default)
'-----------------------------------------
Function Subst(orig_text As String, _
match_pat As String, _
replace_pat As String, _
Optional instance As Variant) As Variant
'-----------------------------------------
Dim regEx As Object, Matches As Object, M As Object

If IsMissing(instance) Then
instance = 0#

ElseIf TypeName(instance) <> "Double" Then
Subst = CVErr(xlErrValue) 'invalid instance type
instance = -1#

ElseIf CDbl(instance) <= 0.5 Then
Subst = CVErr(xlErrNum) 'invalid instance value
instance = -1#

Else
instance = Int(instance + 0.5)

End If

If instance = -1# Then Exit Function 'do nothing quickly

Set regEx = CreateObject("vbscript.regexp")
regEx.Pattern = match_pat
regEx.Global = True

If instance = 0# Then
regEx.Global = True
'Debug.Print orig_text
'Debug.Print replace_pat

Subst = regEx.Replace(orig_text, replace_pat)

Else
Set Matches = regEx.Execute(orig_text)

If instance > Matches.Count Then
Subst = orig_text 'matchnum out of bounds - do nothing

Else
Set M = Matches.Item(instance - 1)
Subst = Left(orig_text, M.FirstIndex) & _
regEx.Replace(M.Value, replace_pat) & _
Right(orig_text, Len(orig_text) - M.FirstIndex - M.Length)

End If

End If

End Function

Avatar
Daniel.M
Tu dois sélectionner UNE seule cellule comme argument à CodeObfuscator, pas une
plage.
Et pourtant, le code fonctionne chez moi que la fonction soit appelée d'une
cellule ou qu'elle soit invoquée directement d'une Sub comme dans l'exemple
suivant où il place en B10 la transformation du texte mis en A10.


' Avec le code dans une cellule A10 (mettons)
Sub Test()
Dim f As String
f = CodeObfuscator(Range("A10")) ' ;-)
Range("B10") = f

End Sub

' Pour mettre dans les cellules de droite d'une PLAGE verticale
Sub Test2()
Dim C as Range

For Each C in Selection
C(1,2) = CodeObfuscator(C)
Next C

End Sub

Salutations,

Daniel M.

"sabatier" wrote in message
news:
merci, daniel, pour ce tuyau en forme de Function...
je voudrais bien, malgré ton conseil négaitf, tenter le coup pour voir le
résultat produit mais n'étant pas un crack de la Function, je ne vois pas
comment lui passer mon code en paramètre ; j'ai tenté de le copier dans un
classeur et ai appelé la Function dans une cellule et sélectionner la plage
où se trouvait le code mais ça n'a pas marché...
si, dans ta bonté au caractère asymptotique, tu peux encore me dire comment
faire....je t'en saurais gré jusqu'à plus soif...
à +
jps



Avatar
Daniel.M
Bonjour Denis,

Est-ce possible que tu tentes de noyer le poisson ? Ça va être
difficile avec JPS, il ne supporte pas l'eau !
;-))



:-))
Il commence déjà à caler. :-)


Je pensais que la fonction Rechercher-Remplacer de la barre des
menus "Édition" de la fenêtre VBE aurait pu faire l'affaire
Rechercher : Range("A12")
Remplacer : [A12]
Avec l'option appropriée cochée :
procédure en cours ou module en cours ou le projet en cours


Ça fonctionne si tu cherches pour A12 mais si tu cherches pour 40 ou 50 adresses
de cellules différentes (dans quelques modules de code)?
Et 30 autres pour un autre fichier (parce que JPS, il voit grand!).

Donc, je pense que ça te prend un système qui identifie le texte à l'intérieur
de l'instruction Range et qui reconnaît s'il s'agit d'une adresse simple (ou
d'un mot qui réfère à un NOM défini dans Excel), auquel cas, il peut la
remplacer par [adresse].

S'il y a un tel système de détection (général, pas seulement pour A12) de
remplacement qui n'oblige pas à l'utilisation des expressions régulières
('regular expressions'), je suis preneur mais j'ai pas trouvé.

Salutations,

Daniel M.

Avatar
michdenis
Bonjour Daniel,

vu sous cet angle ... qu'on appelle d'urgence une équipe de réanimation !

;-))


Salutations!


"Daniel.M" a écrit dans le message de news:
Bonjour Denis,

Est-ce possible que tu tentes de noyer le poisson ? Ça va être
difficile avec JPS, il ne supporte pas l'eau !
;-))



:-))
Il commence déjà à caler. :-)


Je pensais que la fonction Rechercher-Remplacer de la barre des
menus "Édition" de la fenêtre VBE aurait pu faire l'affaire
Rechercher : Range("A12")
Remplacer : [A12]
Avec l'option appropriée cochée :
procédure en cours ou module en cours ou le projet en cours


Ça fonctionne si tu cherches pour A12 mais si tu cherches pour 40 ou 50 adresses
de cellules différentes (dans quelques modules de code)?
Et 30 autres pour un autre fichier (parce que JPS, il voit grand!).

Donc, je pense que ça te prend un système qui identifie le texte à l'intérieur
de l'instruction Range et qui reconnaît s'il s'agit d'une adresse simple (ou
d'un mot qui réfère à un NOM défini dans Excel), auquel cas, il peut la
remplacer par [adresse].

S'il y a un tel système de détection (général, pas seulement pour A12) de
remplacement qui n'oblige pas à l'utilisation des expressions régulières
('regular expressions'), je suis preneur mais j'ai pas trouvé.

Salutations,

Daniel M.

Avatar
sabatier
oui, oui, daniel, merci....pendant que tu préparais ta réponse, je faisais
mes petits essais et découvrais qu'en effet, il fallait sélectionner une
seule cellule comme argument puis tiré vers le bas pour avoir le reste du
texte traduit....
tu m'avais demandé de te tenir au courant et je viens donc au rapport :
une première chose qui n'a rien à voir avec ta fonction : si tu copies une
ligne du module commençant par des ", celui en tête de ligne ne se copie pas
dans la feuille du classeur, pas plus que celui qui "referme" la chaîne de
caractères ; je ne vois pas pourquoi mais toi, si, je pense...
une seconde chose qui elle, concerne la fonction : celle-ci convertit
Selection.Range("A1:F1").Select en

Selection.[A1:F1].Select et ça va faire boguer mais peut-être que la phrase
au départ n'est pas terrible...

voilà, sinon, pour le reste, ça a bien marché
jps




"Daniel.M" a écrit dans le message de
news:

Tu dois sélectionner UNE seule cellule comme argument à CodeObfuscator,
pas une

plage.
Et pourtant, le code fonctionne chez moi que la fonction soit appelée
d'une

cellule ou qu'elle soit invoquée directement d'une Sub comme dans
l'exemple

suivant où il place en B10 la transformation du texte mis en A10.


' Avec le code dans une cellule A10 (mettons)
Sub Test()
Dim f As String
f = CodeObfuscator(Range("A10")) ' ;-)
Range("B10") = f

End Sub

' Pour mettre dans les cellules de droite d'une PLAGE verticale
Sub Test2()
Dim C as Range

For Each C in Selection
C(1,2) = CodeObfuscator(C)
Next C

End Sub

Salutations,

Daniel M.

"sabatier" wrote in message
news:
merci, daniel, pour ce tuyau en forme de Function...
je voudrais bien, malgré ton conseil négaitf, tenter le coup pour voir
le


résultat produit mais n'étant pas un crack de la Function, je ne vois
pas


comment lui passer mon code en paramètre ; j'ai tenté de le copier dans
un


classeur et ai appelé la Function dans une cellule et sélectionner la
plage


où se trouvait le code mais ça n'a pas marché...
si, dans ta bonté au caractère asymptotique, tu peux encore me dire
comment


faire....je t'en saurais gré jusqu'à plus soif...
à +
jps







1 2 3