Nouvelle énigme : Scanner un projet VBA

Le
MichDenis
Bonjour à tous,

Pour ceux et celles qui aiment résoudre un énigme

Quel est le code qui permettrait de scanner tout le code d'un projet VBA
à la recherche d'une chaîne de caractères
La procédure devrait être capable non seulement de trouver les chaines
de caractères mais de faire ce que fait la commande rechercher du menu édition:
A ) Trouver la première occurrence
B ) Ouvrir le module concerné
C ) Sélectionner le texte de la chaîne recherchée
D ) Et sur demande, aller à l'occurrence suivante

Pour les plus futés, il est interdit d'utiliser la commande "Rechercher" du menu
pour résoudre l'énigme : la commande est : -> c'est trop facile !!!
Application.VBE.CommandBars.FindControl(ID:1).Execute

Mais bien de trouver le code qui fasse ce que cette commande fait.

Il n'y a pas d'urgence, j'ai déjà le code (le mien) mais cette question pourrait
bien stimuler quelques curieux qui désirent en savoir plus sur le modèle objet
VBA d'excel !

Bonne journée,

Salutations.
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Modeste
Le #4964171
Bonsour® MichDenis avec ferveur ;o))) vous nous disiez :

Quel est le code qui permettrait de scanner tout le code d'un projet
VBA
à la recherche d'une chaîne de caractères
La procédure devrait être capable non seulement de trouver les chaines
de caractères mais de faire ce que fait la commande rechercher du
menu édition: A ) Trouver la première occurrence
B ) Ouvrir le module concerné
C ) Sélectionner le texte de la chaîne recherchée
D ) Et sur demande, aller à l'occurrence suivante ...

cette question pourrait bien stimuler quelques curieux qui désirent en
savoir plus sur le modèle objet VBA d'excel !


je pense qu'une bonne base de départ serait de s'inspirer de la procédure
Calltree de Stéphen Bullen
et que de toute façon il est hors de question de triturer le VBA sans avoir
auparavent bien assimilé ce qu'a écrit Chip Pearson :
http://www.cpearson.com/excel/vbe.aspx
notament :
;o)))
First, you need to set an reference to the VBA Extensibililty library.
!!!!! ce que je n'arrive pas à faire :-(((
Searching For Text In A Module

The CodeModule object has a Find method that you can use to search for text
within the code module. The Find method accepts ByRef Long parameters. Upon
input, these parameters specify the range of lines and column to search. On
output, these values will point to the found text. To find the second and
subsequent occurence of the text, you need to set the parameters to refer to the
text following the found line and column. The Find method returns True or False
indicating whether the text was found. The code below will search all of the
code in Module1 and print a Debug message for each found occurrence. Note the
values set with the SL, SC, EL, and EC variables. The code loops until the Found
variable is False.

Sub SearchCodeModule()
Dim VBProj As VBIDE.VBProject
Dim VBComp As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule
Dim FindWhat As String
Dim SL As Long ' start line
Dim EL As Long ' end line
Dim SC As Long ' start column
Dim EC As Long ' end column
Dim Found As Boolean

Set VBProj = ActiveWorkbook.VBProject
Set VBComp = VBProj.VBComponents("Module1")
Set CodeMod = VBComp.CodeModule

FindWhat = "findthis"

With CodeMod
SL = 1
EL = .CountOfLines
SC = 1
EC = 255
Found = .Find(target:=FindWhat, StartLine:=SL, StartColumn:=SC, _
EndLine:=EL, EndColumn:ì, _
wholeword:=True, MatchCase:úlse, patternsearch:úlse)
Do Until Found = False
Debug.Print "Found at: Line: " & CStr(SL) & " Column: " &
CStr(SC)
EL = .CountOfLines
SC = EC + 1
EC = 255
Found = .Find(target:=FindWhat, StartLine:=SL, StartColumn:=SC,
_
EndLine:=EL, EndColumn:ì, _
wholeword:=True, MatchCase:úlse, patternsearch:úlse)
Loop
End With
End Sub



--
--
@+
;o)))

isabelle
Le #4964151
hello geedee,



First, you need to set an reference to the VBA Extensibililty library.
!!!!! ce que je n'arrive pas à faire :-(((


tu n'a pas celui la dans ta liste ?
Microsoft Visual Basic For Applications Extensibility 5.3.

isabelle

MichDenis
Le #4964111
Bonjour Modeste,

A )
Ceux qui s'intéressent à la programmation sous Excel
connaissent probablement le site de Chip Pearson

B )
Quelle que soit la problématique posée, il existe sur le Net
des bouts de code qui s'apparente avec la question posée.

C ) First, you need to set an reference to the VBA Extensibililty library
Pour résoudre la question posée, il y a moyen de faire sans.

D )
Ces bouts de code ne répondent pas à la question :
1 - recherche dans tout le projet VBA
2 - sélection tu texte de la chaîne trouvé dans le code
3 - Appel subséquent de la commande pour trouver
l'occurrence suivante.

Ceci étant, la question ne s'adressait pas aux néophytes de ce forum.
Et les adresses que tu as données permettent à ces derniers de se
familiariser avec l'environnement VBA.

Comme dit dans mon message, je possède déjà la solution (une).
La question s'adresse seulement aux curieux avide de répondre
à une question pas souvent posée si jamais elle le fut !

Salutations
papou
Le #4963561
Bonjour Denis
Voici un début plus bas.
Reste à gérer la poursuite de la recherche qui paraît délicate dans la
situation du code exemple.
En revanche elle pourrait probalement être plus facile à partir d'une option
choisie dans un Userform par exemple, et récupérée dans une variable.

Sub Tentons()
Dim ChaineTrouver As String
Dim JaiTrouve As Boolean
Dim DebLig As Long
Dim FinLig As Long
Dim DebCol As Long
Dim FinCol As Long
Dim ProjVb As VBIDE.VBProject
Dim CompVb As VBIDE.VBComponent
Dim Code As VBIDE.CodeModule

Set ProjVb = ActiveWorkbook.VBProject

For Each CompVb In ProjVb.VBComponents
ChaineATrouver = "zaza"
Set Code = CompVb.CodeModule

With Code
DebLig = 1
FinLig = .CountOfLines
DebCol = 1
FinCol = 255

JaiTrouve = .Find(ChaineATrouver, DebLig, DebCol, FinLig, FinCol, _
True, False, False)

If JaiTrouve Then
If MsgBox("Trouvé dans la ligne " & CStr(DebLig) & vbLf & _
"dans le composant : " & CompVb.Name & _
vbLf & "Activer le composant contenant ce texte ?", vbInformation +
vbYesNo, "Résultat") = vbYes Then
With Code.CodePane
.Show
.SetSelection DebLig, DebCol, FinLig, FinCol
End With
Exit For
End If
End If
End With
Next CompVb

End Sub

Cordialement
Pascal

"MichDenis" O%
Bonjour à tous,

Pour ceux et celles qui aiment résoudre un énigme ...

Quel est le code qui permettrait de scanner tout le code d'un projet VBA
à la recherche d'une chaîne de caractères
La procédure devrait être capable non seulement de trouver les chaines
de caractères mais de faire ce que fait la commande rechercher du menu
édition:
A ) Trouver la première occurrence
B ) Ouvrir le module concerné
C ) Sélectionner le texte de la chaîne recherchée
D ) Et sur demande, aller à l'occurrence suivante ...

Pour les plus futés, il est interdit d'utiliser la commande "Rechercher"
du menu
pour résoudre l'énigme : la commande est : -> c'est trop facile !!!
Application.VBE.CommandBars.FindControl(ID:1).Execute

Mais bien de trouver le code qui fasse ce que cette commande fait.

Il n'y a pas d'urgence, j'ai déjà le code (le mien) mais cette question
pourrait
bien stimuler quelques curieux qui désirent en savoir plus sur le modèle
objet
VBA d'excel !

Bonne journée,

Salutations.




MichDenis
Le #4962411
Un petit exemple : http://cjoint.com/?kfn1qLdgvP


"Modeste"
Bonsour® MichDenis avec ferveur ;o))) vous nous disiez :

Quel est le code qui permettrait de scanner tout le code d'un projet
VBA
à la recherche d'une chaîne de caractères
La procédure devrait être capable non seulement de trouver les chaines
de caractères mais de faire ce que fait la commande rechercher du
menu édition: A ) Trouver la première occurrence
B ) Ouvrir le module concerné
C ) Sélectionner le texte de la chaîne recherchée
D ) Et sur demande, aller à l'occurrence suivante ...

cette question pourrait bien stimuler quelques curieux qui désirent en
savoir plus sur le modèle objet VBA d'excel !


je pense qu'une bonne base de départ serait de s'inspirer de la procédure
Calltree de Stéphen Bullen
et que de toute façon il est hors de question de triturer le VBA sans avoir
auparavent bien assimilé ce qu'a écrit Chip Pearson :
http://www.cpearson.com/excel/vbe.aspx
notament :
;o)))
First, you need to set an reference to the VBA Extensibililty library.
!!!!! ce que je n'arrive pas à faire :-(((
Searching For Text In A Module

The CodeModule object has a Find method that you can use to search for text
within the code module. The Find method accepts ByRef Long parameters. Upon
input, these parameters specify the range of lines and column to search. On
output, these values will point to the found text. To find the second and
subsequent occurence of the text, you need to set the parameters to refer to the
text following the found line and column. The Find method returns True or False
indicating whether the text was found. The code below will search all of the
code in Module1 and print a Debug message for each found occurrence. Note the
values set with the SL, SC, EL, and EC variables. The code loops until the Found
variable is False.

Sub SearchCodeModule()
Dim VBProj As VBIDE.VBProject
Dim VBComp As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule
Dim FindWhat As String
Dim SL As Long ' start line
Dim EL As Long ' end line
Dim SC As Long ' start column
Dim EC As Long ' end column
Dim Found As Boolean

Set VBProj = ActiveWorkbook.VBProject
Set VBComp = VBProj.VBComponents("Module1")
Set CodeMod = VBComp.CodeModule

FindWhat = "findthis"

With CodeMod
SL = 1
EL = .CountOfLines
SC = 1
EC = 255
Found = .Find(target:=FindWhat, StartLine:=SL, StartColumn:=SC, _
EndLine:=EL, EndColumn:ì, _
wholeword:=True, MatchCase:úlse, patternsearch:úlse)
Do Until Found = False
Debug.Print "Found at: Line: " & CStr(SL) & " Column: " &
CStr(SC)
EL = .CountOfLines
SC = EC + 1
EC = 255
Found = .Find(target:=FindWhat, StartLine:=SL, StartColumn:=SC,
_
EndLine:=EL, EndColumn:ì, _
wholeword:=True, MatchCase:úlse, patternsearch:úlse)
Loop
End With
End Sub



--
--
@+
;o)))

isabelle
Le #4962381
merci Denis, je me suis bien amusé c'est impecable et cela fonctionne très bien sur xl2002.

isabelle

Un petit exemple : http://cjoint.com/?kfn1qLdgvP


"Modeste"
Bonsour® MichDenis avec ferveur ;o))) vous nous disiez :


Quel est le code qui permettrait de scanner tout le code d'un projet
VBA
à la recherche d'une chaîne de caractères
La procédure devrait être capable non seulement de trouver les chaines
de caractères mais de faire ce que fait la commande rechercher du
menu édition: A ) Trouver la première occurrence
B ) Ouvrir le module concerné
C ) Sélectionner le texte de la chaîne recherchée
D ) Et sur demande, aller à l'occurrence suivante ...



cette question pourrait bien stimuler quelques curieux qui désirent en
savoir plus sur le modèle objet VBA d'excel !



je pense qu'une bonne base de départ serait de s'inspirer de la procédure
Calltree de Stéphen Bullen
et que de toute façon il est hors de question de triturer le VBA sans avoir
auparavent bien assimilé ce qu'a écrit Chip Pearson :
http://www.cpearson.com/excel/vbe.aspx
notament :
;o)))
First, you need to set an reference to the VBA Extensibililty library.
!!!!! ce que je n'arrive pas à faire :-(((
Searching For Text In A Module

The CodeModule object has a Find method that you can use to search for text
within the code module. The Find method accepts ByRef Long parameters. Upon
input, these parameters specify the range of lines and column to search. On
output, these values will point to the found text. To find the second and
subsequent occurence of the text, you need to set the parameters to refer to the
text following the found line and column. The Find method returns True or False
indicating whether the text was found. The code below will search all of the
code in Module1 and print a Debug message for each found occurrence. Note the
values set with the SL, SC, EL, and EC variables. The code loops until the Found
variable is False.

Sub SearchCodeModule()
Dim VBProj As VBIDE.VBProject
Dim VBComp As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule
Dim FindWhat As String
Dim SL As Long ' start line
Dim EL As Long ' end line
Dim SC As Long ' start column
Dim EC As Long ' end column
Dim Found As Boolean

Set VBProj = ActiveWorkbook.VBProject
Set VBComp = VBProj.VBComponents("Module1")
Set CodeMod = VBComp.CodeModule

FindWhat = "findthis"

With CodeMod
SL = 1
EL = .CountOfLines
SC = 1
EC = 255
Found = .Find(target:=FindWhat, StartLine:=SL, StartColumn:=SC, _
EndLine:=EL, EndColumn:ì, _
wholeword:=True, MatchCase:úlse, patternsearch:úlse)
Do Until Found = False
Debug.Print "Found at: Line: " & CStr(SL) & " Column: " &
CStr(SC)
EL = .CountOfLines
SC = EC + 1
EC = 255
Found = .Find(target:=FindWhat, StartLine:=SL, StartColumn:=SC,
_
EndLine:=EL, EndColumn:ì, _
wholeword:=True, MatchCase:úlse, patternsearch:úlse)
Loop
End With
End Sub



--
--
@+
;o)))






Misange
Le #4962181
Super !
C'est à adopter quand on veut changer une référence dans tous les
modules. Ca fait rigolo de voir une barre d'outil supplémentaire dans
VBE et pas dans excel.
En tous cas ça fonctionne très bien avec 2007 aussi.
Merci du cadeau forumesque :-) et tant pis pour ceux qui se réveilleront
trop tard pour le récupérer :-)
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Un petit exemple : http://cjoint.com/?kfn1qLdgvP


"Modeste"
Bonsour® MichDenis avec ferveur ;o))) vous nous disiez :

Quel est le code qui permettrait de scanner tout le code d'un projet
VBA
à la recherche d'une chaîne de caractères
La procédure devrait être capable non seulement de trouver les chaines
de caractères mais de faire ce que fait la commande rechercher du
menu édition: A ) Trouver la première occurrence
B ) Ouvrir le module concerné
C ) Sélectionner le texte de la chaîne recherchée
D ) Et sur demande, aller à l'occurrence suivante ...

cette question pourrait bien stimuler quelques curieux qui désirent en
savoir plus sur le modèle objet VBA d'excel !


je pense qu'une bonne base de départ serait de s'inspirer de la procédure
Calltree de Stéphen Bullen
et que de toute façon il est hors de question de triturer le VBA sans avoir
auparavent bien assimilé ce qu'a écrit Chip Pearson :
http://www.cpearson.com/excel/vbe.aspx
notament :
;o)))
First, you need to set an reference to the VBA Extensibililty library.
!!!!! ce que je n'arrive pas à faire :-(((
Searching For Text In A Module

The CodeModule object has a Find method that you can use to search for text
within the code module. The Find method accepts ByRef Long parameters. Upon
input, these parameters specify the range of lines and column to search. On
output, these values will point to the found text. To find the second and
subsequent occurence of the text, you need to set the parameters to refer to the
text following the found line and column. The Find method returns True or False
indicating whether the text was found. The code below will search all of the
code in Module1 and print a Debug message for each found occurrence. Note the
values set with the SL, SC, EL, and EC variables. The code loops until the Found
variable is False.

Sub SearchCodeModule()
Dim VBProj As VBIDE.VBProject
Dim VBComp As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule
Dim FindWhat As String
Dim SL As Long ' start line
Dim EL As Long ' end line
Dim SC As Long ' start column
Dim EC As Long ' end column
Dim Found As Boolean

Set VBProj = ActiveWorkbook.VBProject
Set VBComp = VBProj.VBComponents("Module1")
Set CodeMod = VBComp.CodeModule

FindWhat = "findthis"

With CodeMod
SL = 1
EL = .CountOfLines
SC = 1
EC = 255
Found = .Find(target:=FindWhat, StartLine:=SL, StartColumn:=SC, _
EndLine:=EL, EndColumn:ì, _
wholeword:=True, MatchCase:úlse, patternsearch:úlse)
Do Until Found = False
Debug.Print "Found at: Line: " & CStr(SL) & " Column: " &
CStr(SC)
EL = .CountOfLines
SC = EC + 1
EC = 255
Found = .Find(target:=FindWhat, StartLine:=SL, StartColumn:=SC,
_
EndLine:=EL, EndColumn:ì, _
wholeword:=True, MatchCase:úlse, patternsearch:úlse)
Loop
End With
End Sub



--
--
@+
;o)))






Paul V
Le #4962051
hello MichDenis

As-tu testé sous 2007.
A première vue cela plante mais j'ai pas trop le temps de voir pourquoi.

J'essayerai de trouver un peu de temps la semaine prochaine.

A+

Paul V

Un petit exemple : http://cjoint.com/?kfn1qLdgvP


"Modeste"
Bonsour® MichDenis avec ferveur ;o))) vous nous disiez :

Quel est le code qui permettrait de scanner tout le code d'un projet
VBA
à la recherche d'une chaîne de caractères
La procédure devrait être capable non seulement de trouver les chaines
de caractères mais de faire ce que fait la commande rechercher du
menu édition: A ) Trouver la première occurrence
B ) Ouvrir le module concerné
C ) Sélectionner le texte de la chaîne recherchée
D ) Et sur demande, aller à l'occurrence suivante ...

cette question pourrait bien stimuler quelques curieux qui désirent en
savoir plus sur le modèle objet VBA d'excel !


je pense qu'une bonne base de départ serait de s'inspirer de la procédure
Calltree de Stéphen Bullen
et que de toute façon il est hors de question de triturer le VBA sans avoir
auparavent bien assimilé ce qu'a écrit Chip Pearson :
http://www.cpearson.com/excel/vbe.aspx
notament :
;o)))
First, you need to set an reference to the VBA Extensibililty library.
!!!!! ce que je n'arrive pas à faire :-(((
Searching For Text In A Module

The CodeModule object has a Find method that you can use to search for text
within the code module. The Find method accepts ByRef Long parameters. Upon
input, these parameters specify the range of lines and column to search. On
output, these values will point to the found text. To find the second and
subsequent occurence of the text, you need to set the parameters to refer to the
text following the found line and column. The Find method returns True or False
indicating whether the text was found. The code below will search all of the
code in Module1 and print a Debug message for each found occurrence. Note the
values set with the SL, SC, EL, and EC variables. The code loops until the Found
variable is False.

Sub SearchCodeModule()
Dim VBProj As VBIDE.VBProject
Dim VBComp As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule
Dim FindWhat As String
Dim SL As Long ' start line
Dim EL As Long ' end line
Dim SC As Long ' start column
Dim EC As Long ' end column
Dim Found As Boolean

Set VBProj = ActiveWorkbook.VBProject
Set VBComp = VBProj.VBComponents("Module1")
Set CodeMod = VBComp.CodeModule

FindWhat = "findthis"

With CodeMod
SL = 1
EL = .CountOfLines
SC = 1
EC = 255
Found = .Find(target:=FindWhat, StartLine:=SL, StartColumn:=SC, _
EndLine:=EL, EndColumn:ì, _
wholeword:=True, MatchCase:úlse, patternsearch:úlse)
Do Until Found = False
Debug.Print "Found at: Line: " & CStr(SL) & " Column: " &
CStr(SC)
EL = .CountOfLines
SC = EC + 1
EC = 255
Found = .Find(target:=FindWhat, StartLine:=SL, StartColumn:=SC,
_
EndLine:=EL, EndColumn:ì, _
wholeword:=True, MatchCase:úlse, patternsearch:úlse)
Loop
End With
End Sub



--
--
@+
;o)))






Misange
Le #4961771
chez moi sous 2007 ça roule nickel.
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

hello MichDenis

As-tu testé sous 2007.
A première vue cela plante mais j'ai pas trop le temps de voir pourquoi.

J'essayerai de trouver un peu de temps la semaine prochaine.

A+

Paul V

Un petit exemple : http://cjoint.com/?kfn1qLdgvP


"Modeste"
Bonsour® MichDenis avec ferveur ;o))) vous nous disiez :

Quel est le code qui permettrait de scanner tout le code d'un projet
VBA
à la recherche d'une chaîne de caractères
La procédure devrait être capable non seulement de trouver les chaines
de caractères mais de faire ce que fait la commande rechercher du
menu édition: A ) Trouver la première occurrence
B ) Ouvrir le module concerné
C ) Sélectionner le texte de la chaîne recherchée
D ) Et sur demande, aller à l'occurrence suivante ...

cette question pourrait bien stimuler quelques curieux qui désirent en
savoir plus sur le modèle objet VBA d'excel !


je pense qu'une bonne base de départ serait de s'inspirer de la procédure
Calltree de Stéphen Bullen
et que de toute façon il est hors de question de triturer le VBA sans
avoir
auparavent bien assimilé ce qu'a écrit Chip Pearson :
http://www.cpearson.com/excel/vbe.aspx
notament :
;o)))
First, you need to set an reference to the VBA Extensibililty library.
!!!!! ce que je n'arrive pas à faire :-(((
Searching For Text In A Module

The CodeModule object has a Find method that you can use to search for
text
within the code module. The Find method accepts ByRef Long parameters.
Upon
input, these parameters specify the range of lines and column to
search. On
output, these values will point to the found text. To find the second and
subsequent occurence of the text, you need to set the parameters to
refer to the
text following the found line and column. The Find method returns True
or False
indicating whether the text was found. The code below will search all
of the
code in Module1 and print a Debug message for each found occurrence.
Note the
values set with the SL, SC, EL, and EC variables. The code loops until
the Found
variable is False.

Sub SearchCodeModule()
Dim VBProj As VBIDE.VBProject
Dim VBComp As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule
Dim FindWhat As String
Dim SL As Long ' start line
Dim EL As Long ' end line
Dim SC As Long ' start column
Dim EC As Long ' end column
Dim Found As Boolean

Set VBProj = ActiveWorkbook.VBProject
Set VBComp = VBProj.VBComponents("Module1")
Set CodeMod = VBComp.CodeModule

FindWhat = "findthis"

With CodeMod
SL = 1
EL = .CountOfLines
SC = 1
EC = 255
Found = .Find(target:=FindWhat, StartLine:=SL,
StartColumn:=SC, _
EndLine:=EL, EndColumn:ì, _
wholeword:=True, MatchCase:úlse, patternsearch:úlse)
Do Until Found = False
Debug.Print "Found at: Line: " & CStr(SL) & " Column: " &
CStr(SC)
EL = .CountOfLines
SC = EC + 1
EC = 255
Found = .Find(target:=FindWhat, StartLine:=SL,
StartColumn:=SC,
_
EndLine:=EL, EndColumn:ì, _
wholeword:=True, MatchCase:úlse,
patternsearch:úlse)
Loop
End With
End Sub



--
--
@+
;o)))








MichDenis
Le #4961671
En regardant de plus près, J'ai "omis" de charger la bibliothèque
"Microsoft Visual Basic for Applications Extensibility 5.3"
à l'aide de la méthode "Quid". Conclusion, le fichier responsable
de la bibliothèque chargé n'est pas situé au même endroit si
quelqu'un possède un système d'exploitation comme :
windows 2000 :
Le chemin n'est pas c:Windows.... mais C:Winnt....

Sous windows 95 et Windows 98
le fichier "devrait" (non vérifier) dans le sous répertoire "system"
plutôt que "system32" du répertoire windows pour windows xp.

Ils sont avertis... il n'y aura pas de version mise à jour ;-))
Vous vous adressez à Microsoft ! ;-)
Publicité
Poster une réponse
Anonyme