Création d'un UserForm annimé pour faire patienter l'utilisateur

Résolu
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 - 4 sept. 2011 à 12:43
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 6 sept. 2011 à 12:13
Bonjour le Forum,

Voici le contexte :

J'ai développé une Macro comportant un sacré paquets de lignes, et qui exécute un sacré paquets d'opérations (Principalement des calculs avec des grosses formules sur des centaines de lignes).

Du coup quand je lance ma Macro et bien mon écran se "fige" l'espace d'une 20aine de secondes. Il s'agit du temps que met le pc pour réaliser les calculs, tracer les graphs, etc. On pourrais penser que la Macro bug, alors que c'est faux.

Du coup j'aimerais mettre un UserForm animé à l'écran et qui se déclenche au moment que je désire avec un "UserFom Show". Puis qui se termine avec un "Userform Unload".

Précisions :

Je ne veux pas mettre une "progress bar" car je ne suis pas capable de déterminer à l'avance le nombre d'opérations qui sera à traiter. Sa pourrait varier de 4 secondes à 40 secondes par exemple. Donc une progress bar n'est pas adaptée pour moi.

Du coup je désire un UserForm qui sois animé en boucle par une série de petites barres, ou de points, ou de lignes etc qui indiquent à l'utilisateur que des calculs sont en cours.

Comme sa, quand la Macro se déclenche, l'utilisateur vois apparaitre à l'écran un message animé lui indiquant que tout est normal.

Pour l’animation je n'ai pas vraiment de préférences, sa peut être un texte qui tourne en boucle, des points qui se suivent les uns après les autres etc. Juste un UserForm animé pour ne pas penser que sa bug (et pour le style aussi^^).

Donc vous l'avez compris, je me fiche d'avoir un pourcentage de progression, simplement un message qui tourne en boucle jusqu’à ce que les calculs soient terminés.

J'ai trouvé sur le net un premier exemple avec une progress bar, peut être est-il possible de le modifier un peu pour que la progression de la barre ne sois plus liée au nombre d'opérations exécutées, mais au temps d'affichage de l'UserForm.

Conclusion :

J'espère avoir été clair sur la définition de mon besoin. Je reste dans le coin pour plus d'infos.

Cordialement,

André

PS : Excel 2007

16 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
6 sept. 2011 à 11:06
Ce matin, j'ai répondu rapidement faute de temps. Maintenant voici la manière de supprimer le combo:
reflexion: à quoi sert le combo?
à sélectionner la feuille IMAGE peut-on le remplacer?
oui par:
 Sheets("IMAGE").Select

l'action est lancer par l'evenement combo_change, le remplacer par par
Private Sub Afficherimage()

Il ne reste plus qu'a supprimer tout ce qui est en rapport avec le combo (mis en commentaires)
Voici le code final

Option Explicit
Private Sub UserForm_Initialize()

    Dim x As Byte

    'If ThisWorkbook.Worksheets.Count > 1 Then 'Boucle sur les feuilles (à partir du 2eme onglet):
       ' For x = 2 To ThisWorkbook.Worksheets.Count
           ' ComboBox1.AddItem ThisWorkbook.Worksheets(x).Name
       ' Next
   ' End If
   
    
    Dim LeTexte As String, LaCouleur As String
    
    '----------- message pendant le transfert ----
    'Permet de créer un message d'attente défilant dans le WebBrowser pendant le transfert
    'des données (au format binaire) dans les cellules de la nouvelle feuille.
    LeTexte = "Veuillez patienter... traitement en cours ..."
    LaCouleur = "#CC0000"
    
    WebBrowser2.Navigate _
    "about:<html>" & _
    "<marquee>" & LeTexte & "</marquee></html>"
    '----------------------------------------------
   Afficherimage
End Sub
'La sélection d'un nom va déclencher la création d'un fichier gif à partir des données
'binaires stockées dans la feuille, puis l'affichage de cette image dans le WebBrowser.
Private Sub Afficherimage()
    Dim S As String
    Dim i As Long, F As Long
    Dim j As Byte, b As Byte
    Dim Hauteur As Long, Largeur As Long
    Sheets("IMAGE").Select
'    'Vérifie qu'il y a bien un nom de choisi dans le ComboBox.
'    If ComboBox1.Value = "" Then Exit Sub
    
    i = 1
    'Définit le chemin de l'image qui va être créée.
    S = "C:\imageTemp.gif"
    
    '----- Création de l'image pour un affichage dans l'USF -----
    F = FreeFile
    Open S For Binary Access Write As F
    
        Do
        j = j + 1
                If j = 21 Then
                j = 1
                i = i + 1
                End If
        b = ThisWorkbook.Sheets("IMAGE").Cells(i, j).Value
        Put #F, , b
        DoEvents
        Loop While ThisWorkbook.Sheets("IMAGE").Cells(i, j).Value <> ""
    
    Close F
    '------------------------------------------------------------
    
'        'Définit les dimensions d'affichage de l'image dans le WebBrowser.
'    Largeur = WebBrowser1.Width * 96 / 72
'    Hauteur = WebBrowser1.Height * 96 / 72
    
   ' Version pour afficher l'image à sa taille réelle:
    WebBrowser1.Navigate _
    "ABOUT:<HTML><CENTER><HEAD></CENTER></HTML>"
          Sheets("Feuil1").Select
End Sub
'Evênement fermeture du UserForm
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Dim Fs As Object
    
    Set Fs = CreateObject("Scripting.FileSystemObject")
    'Supprime l'image temporaire si elle existe
    If Fs.FileExists("C:\imageTemp.gif") Then Kill "C:\imageTemp.gif"
End Sub


facile le vba!!!!!!!!!!!!!!

@+ Le Pivert
3
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
6 sept. 2011 à 11:46
Merci Merci Le Pivers !!!

Je savais bien qu'il ne restait plus qu'a changer une petite chose dans le code. Un mot ! Un simple tout petit mot que je ne suis même pas arrivé à trouver. Comme quoi j'ai les idées mais pas la manière de programmer^^. Oui le ComboBox m'était inutile mais je ne parvenais pas à m'en affranchir.

Bon ben après modifications générales de l'ensemble des codes je suis à même de poster une solution finale pour clore cette discussion. Pour rappel à tous les arrivants, mon but était de pouvoir stoker une image Gif animée directement dans un classeur Excel ET d'utiliser cette image animée dans le classeur au moment voulu.

Avantages :

-Un seul et unique document Excel à transmettre. Pas besoin d'envoyer le fichier Excel ET l'image qui lui est associée.

-Esthétiquement sa envoie du lourd d'avoir une petite animation qui tourne sur Excel (Idéal pour faire patienter un utilisateur, c'est mon cas).

-On peut charger plusieurs images différentes et toutes les afficher simultanément ou chacune à un moment décisif de sa Macro.

-Avec les fichiers que je vais mettre en pièce jointe, la procédure est terriblement enfantine...et efficace !


Inconvénients :

-Stocker une image Gif dans une feuille Excel, alourdit le fichier global en taille.

-Demander à Excel de faire tourner une animation PENDANT qu'Excel traite d'autres calculs longs; peut encore plus retarder l'avancement des calculs (on peut très bien afficher une animation pendant qu'un utilisateur remplis tranquillement un formulaire)

-Sa m'a pris du temps pour mettre au point cette petite astuce "inutile" diront certains. Mais maintenant je suis à même de le faire en moins de 10 min


Voili voila de ce que je pouvais conclure. Ma curiosité est maintenant pleinement satisfaite. Je vais pouvoir passer à autre chose lol.


Bien maintenant je vais expliquer très brièvement comment se servir des fichiers.

-Un des classeurs permet de charger une image Gif de son disque dur et de stocker cette image dans une nouvelle feuille d'Excel. Cette image est en fait converti en Binaire.

-Ensuite il suffit d'ouvrir le deuxième classeur Excel, et de copier le code de l'image dans la feuille Excel nommée "IMAGE". Je me répète, avec le premier classeur on copie les données relatives à l'image chargée ET on viens coller les données dans le classeur numéro 2 dans la feuille nommée "IMAGE".

-Suffit de lancer ensuite la Macro et le tour est joué. Chacun adaptera l'userform, l'image stockée, et le texte défilant à sa guise.

Je ne pourrais pas faire plus simple.

Bonne continuation à tous. Et encore merci pour toutes vos solutions proposées ET vos aides qui m'ont beaucoup servi.

Cordialement,

André

PS : Le lien pour le téléchargement
http://www.cijoint.fr/cjlink.php?file=cj201109/cij6RcrStX.zip
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 sept. 2011 à 17:16
Ouais...
On va toutefois éviter de se lancer dans ce qui s'écarte encore de tes connaissances.
VBA t'offre déjà ce qu'il te faut et qui te suffit pour ce "petit" propos-là .

Voilà un exemple (tu devrais normalement vite comprendre)

Au début du lancement de ta macro :
Dim duree As Integer
  duree = 10 ' pour 10 secondes
  stoppons =  Now + TimeValue("00:00:" & duree)
  patientez.Show

Dans un userform nommé patientez :
Private Sub UserForm_Initialize()
  Me.Move 0, 0, 2000, 20
  patientons
End Sub

et dans un module standard :
Public stoppons As Date
Public Sub patientons()
  patientez.Tag  = Val(patientez.Tag)
  messages = Array("Je travaille, moi", "I am working for you", "Dejenme tranquilo, por favor", "un peu de patience, SVP", _
  "Keep quiet, please", "estoy trabajando")
  patientez.Caption = Format(messages(patientez.Tag), String(150, "@"))
  If Now < stoppons Then
    Application.OnTime Now + TimeValue("00:00:01"), "patientons" 'stoppons"
    patientez.Tag = Val(patientez.Tag + 1)
    If Val(patientez.Tag) > UBound(messages) Then patientez.Tag = 0
  Else
    Unload patientez
  End If
End Sub

Essaye et tu vas voir
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
2
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
4 sept. 2011 à 12:45
Le fichier en question pour avoir un aperçu très global

http://www.cijoint.fr/cjlink.php?file=cj201109/cijqFTtNNv.xls
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
4 sept. 2011 à 13:18
Bonjour,

Il te faut utiliser un contrôle Timer, qui n'existe pas en natif en VBA. Ensuite c'est basique...

Regardes ici :
http://www.vbfrance.com/codes/ALTERNATIVE-TIMER-VBA_41396.aspx

Amicalement,
Us.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 sept. 2011 à 13:49
Bonjour,

Il s'agit du temps que met le pc pour réaliser les calculs, tracer les graphs, etc.

même pas besoin, alors, d'un contrôle Timer ou d'un ersatz VBA.
Il suffit d'insérer dans le code de la longue macro, ici et là, une instruction de modification de l'UserForm au fur et à mesure de l'avancement des autres instructions de la macro.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
4 sept. 2011 à 13:59
Merci US de bien vouloir te pencher sur mon problème. Je ne l'ai peut être pas précisé...mais je suis un débutant en VBA et Macro Excel plus largement.

Je n'ai créé pour le moment qu'un seul UserForm. Je suis allé voir ton lien, mais je ne comprends pas le principe.

Le timer m'offre un temps si j'ai bien compris. Mais quel rapport avec mon problème ? Et quel lien avec un UserForm ?

La je nage encore. Dsl
0
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
4 sept. 2011 à 14:08
Ucfoutu, qu'entends tu par "insérer une instruction de modification de l'UserForm" ?

Pour reprendre le problème de manière plus simple, est-il possible de créer un UserForm tout bête qui une fois lancé affiche une animation de progression en boucle ???

Juste un UserForm, sans AUCUN lien avec un module particulier. Sa doit bien être possible sa il me semble. Comme sa, moi ensuite il me suffit de faire afficher l'UserForm en début de procédure longue et de le cacher en fin de procédure longue. C'est simple et logique comme raisonnement non ?

Donc la question est alors : Comment créer un UserForm tout con qui une fois lancé, affiche un texte en boucle, affiche une barre de progression en boucle, affiche une image Gif animée etc. N'importe quelle type d'animation en boucle !

André
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
4 sept. 2011 à 14:30
Re,

Le contrôle 'TIMER' permet d'exécuter une SUB (ou autre) à un interval régulier (par exemple tous les 2 secondes) indépendamment du reste du code. Ainsi à chaque appel, tu peux incrémenter un paramètre (par exemple la position d'une picture box pour faire une animation). Voilà pour le principe.

Le code proposé, quant à lui, réalise le contrôle 'TIMER'. En effet, ce contrôle existe sous les versions de VB6 (et moins), VB.NET, etc. , mais pas sous VBA (donc sous Excel, Word, etc. toutes les applications d'office en somme).
Ainsi, il faut un programmer un. Ici, les éléments clés du TIMER sont réalisés à partir des API. Je n'entrerai pas plus dans le détail car c'est pas trop du niveau débutant. Mais tu peux utiliser le TIMER proposé comme une 'boite noire', et ne retenir que le fonctionnement comme dit au début. C'est de toute façon l'idée de la source.

Je vais te mettre un exemple sur VBF...

Amicalement,
Us.
0
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
4 sept. 2011 à 15:01
Us,

Si je comprends bien, le "Timer" est un peu l'équivalent d'une boucle For :

For i = X To X Step XXX
    Do Blabla
Next


On encadre le Timer par deux valeur (ex: [0 seconde; 60 secondes]), on incrémente toute les 0,5 secondes. Et pour chaque incrément, on peut par exemple lui demander de déplacer un truc quoi (une image, une forme, etc).

Je suis dans le vrai ou complètement à coté de la plaque ?

Dans ce cas la on pourrait créer un userForm très simple qui fasse tourner en boucle pendant 60 secondes une animation ???

Si je pouvais avoir un exemple concret de ce Timer appliqué à un UserForm je comprendrais mieux je pense.

André
0
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
4 sept. 2011 à 17:39
Merci Ucfoutu,

Sa marche en effet très bien. C'est un peu "flat" mais sa répond bien à mon besoin. Donc si vraiment je n'ai que cette solution qui marche, je l'utiliserais.

Ce qui m'embête c'est que j'ai continué de chercher une solution pour ce message d'attente et que j'ai finalement mis la main sur une solution un peu plus élégante, et encore plus simple que la tienne Ucfoutu.

Je vais présenter cette solution rapidement ci-après.

Il s'agit d'un userform qui fait appel à une image gif animée. Du coup quand j'entre dans ma procédure longue, je fais afficher cet userform. Durant tout le long de la procédure, l'image est animée, et quand je sors de ma procédure longue l'userform se cache.

Jusque la tout vas bien, sa marche, c'est simple, et c'est jolie !
Le seul souci, c'est que l'userform doit charger une image gif qui est stockée sur mon disque dur. Et moi je voudrais avoir un seul et unique classeur Excel SANS fichiers externe attaché.

J'ai vu sur Internet, qu'il était possible de stoker une image gif directement dans un classeur Excel mais pour le moment je n'y parvient pas. J'en suis à ce stade actuellement.

Donc maintenant sois j'utilise ta solution qui marche déjà bien Ucfoutu, sois je prends le paris de terminer la solution sur laquelle j'étais actuellement. Et donc résoudre le souci de comment intégrer une image gif directement au seins d'un classeur.

Étant donnée qu'il existe 2 méthodes pour réaliser cela, je pense que je vais tout de même poursuivre mon idée. (En fait, j'aime beaucoup l'userform que j'ai créé avec l'image gif associé...)

Je met en liens : le classeur Excel contenant l'userform, l'image gif associée.

Merci pour votre aide.

Cordialement André

PS :
http://www.cijoint.fr/cjlink.php?file=cj201109/cijmYRzJMZ.xls
http://www.cijoint.fr/cjlink.php?file=cj201109/cijpLEj7Rq.gif
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
5 sept. 2011 à 15:14
Bonjour,

Oui ucfoutu, l'utilisation de "application.ontime" est aussi une bonne solution.

Voici une autre solution (plus légère et plus à mon goût)

Il faut une Userform + Label
Le message du label se met à jour en lui rajoutant un point. Mais rien n'empêche de faire


' TIMER : Mise à jour d'un label dans une userform

' Directement inspiré de :
' http://stackoverflow.com/questions/2319683/vba-macro-on-timer-style-to-run-code-every-set-number-of-seconds-i-e-120-second

Dim TimerActive As Boolean

Private Sub Start_Timer()
    TimerActive = True
    Application.OnTime Now() + TimeValue("00:00:01"), "Timer"
End Sub

Private Sub Stop_Timer()
    TimerActive = False
End Sub

Private Sub Timer()
    If TimerActive Then
        UserForm1.Label1 = UserForm1.Label1 & "." ' Ajouter un point au message d'attente
        Application.OnTime Now() + TimeValue("00:00:01"), "Timer" 'une seconde
    End If
End Sub

Sub StartTimer()
    
    ' Démarrage du TIMER
    UserForm1.Show (0) 'ouvre l'userform1 en mode modal (Attention ce mode est obligatoire!)
    Start_Timer 'Démarre le Timer
    
    ' Ici le code
    ' ...........
    
    
    ' Arrêt du TIMER
    ' Stop_Timer
    
End Sub


Amicalement,
Us.
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
5 sept. 2011 à 15:15
Mais rien n'empêche de faire autre chose...
0
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
6 sept. 2011 à 01:55
Re-bonjour tout le monde...Que dis-je !!! Bonsoir vu l'heure...

Alors comme promis je reviens ici pour faire état de mon avancement. L'idée de base était de créer un UserForm qui affiche une image Gif animée pendant l'exécution de certains calculs longs.

Et bien après avoir planché quelques heures dessus j'en suis arrivé à la conclusion que j'avais raison sur bcp de points (enfin je suis convaincu quoi). Mon idée était la suivante :

- Charger une image Gif depuis le disque local du PC et qui sera stockée dans une feuille Excel. Pour ce faire on décompose l'image en binaire dans une nouvelle feuille Excel. Jusque la je sais faire. Je peux donc sauvegarder dans une feuille Excel n'importe quelle image Gif de mon choix. Ça c'est cool quand même.
Quand je fais enregistrer le classeur, Excel sauvegarde la feuille contenant les informations de l'image. Et voila du coup comment on stocke une image Gif sous Excel. Sa évite d'avoir 2 fichiers à trimbaler.

Ça, c'est le bon point.

-Ensuite, j'utilise un WebBrowser dans un UserForm pour lire les informations que contient la feuille Excel pour afficher l'image animée. Jusque la j'y arrive...presque ! Et c'est bien la, la dernière petite limite qu'il me reste avant de pouvoir dire, "Ok la réponse à mon besoin initial est terminé".

Quel est le problème ?

Et bien je dispose d'un classeur Excel qui contient 2 feuilles. Sur la première feuille rien de spécial. Juste un bouton de commande pour lancer la macro. La deuxième feuille contient le code de l'image. Sur mon UserForm, j'ai une ComboBox qui m’emmerde comme pas possible ! Elle contient les instructions pour faire créer l'image et la faire charger dans le WebBrowser. Sauf que moi je me moque de la ComboBox. Je désire qu'a l'affichage de l'UserForm :

-La combobox sois supprimée car elle ne m'est d'aucune utilité.

-Le webBrowser affiche directement l'image qui est contenu dans la feuille Excel numéro 2. Affichage en boucle sans aucune confirmation de l'utilisateur.

-Tout cela tournant en boucle tant que l'utilisateur n'aie pas quitté l'userform.

Dans le code de l'UserForm, il n'y a que 2 lignes à modifier. Il s'agit des lignes pour la création de l'image et du fichier source. Mais je ne parviens pas à déchiffrer ce code. Du coup je sais d’où viens le problème mais je n'ai pas les compétences pour le modifier.

Je m'en retourne de nouveau vers vous. Sa doit prendre 10 min pour une personne sachant créer et manipuler des fichiers depuis une Macro. Mais pour moi qui débute, c'est juste trop. Déjà j'ai trouvé la solution de principe qui finalement marche. Ne reste plus qu'a apporter une modif et le tour est joué. Sur que sa sera utile pour d'autres personnes.

Voici le lien pour le classeur Excel :
http://www.cijoint.fr/cjlink.php?file=cj201109/cijr3ZxYAy.xls


Bien cordialement,

André

PS : Ces 2 lignes de codes m'ont eu à l'usure, je baisse les bras...pour ce soir seulement^^
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
6 sept. 2011 à 08:19
Bonjour,
J'ai regardé vite fait. Si tu ne veux pas t'embêter et que cela fonctionne. Voici une manière simple :

Mettre le Frame1: Visible False pour ne pas voir le combo
ensuite ajouter une ligne de code dans

Private Sub UserForm_Initialize()

    Dim x As Byte

    If ThisWorkbook.Worksheets.Count > 1 Then 'Boucle sur les feuilles (à partir du 2eme onglet):
        For x = 2 To ThisWorkbook.Worksheets.Count
            ComboBox1.AddItem ThisWorkbook.Worksheets(x).Name
        Next
    End If
   
    
    Dim LeTexte As String, LaCouleur As String
    
    '----------- message pendant le transfert ----
    'Permet de créer un message d'attente défilant dans le WebBrowser pendant le transfert
    'des données (au format binaire) dans les cellules de la nouvelle feuille.
    LeTexte = "Veuillez patienter... traitement en cours ..."
    LaCouleur = "#CC0000"
    
    WebBrowser2.Navigate _
    "about:<html>" & _
    "<marquee>" & LeTexte & "</marquee></html>"
    '----------------------------------------------
'voici la ligne à ajouter.
     ComboBox1.ListIndex = 0
End Sub


@+ Le Pivert
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
6 sept. 2011 à 12:13
SERIEUXETCOOL, c'est sympa de faire partager tes trouvailles. Je suis content d'avoir pu me rendre utile avec mes maigres compétences.
Bonne programmation et à une prochaine fois sur ce site.


@+Le Pivert
0
Rejoignez-nous