Disparition userform

  • Initiateur de la discussion Nicolas
  • Date de début
N

Nicolas

Guest
Bonsoir à tous,

N'ayant pas eu de réponse (surement par ce que j'ai commis une erreur de débutant en interpellant thierry et je vous demande de bien vouloir m'excuser encore ) je me permets de reposer ma question sur un nouveau post (en espréant ne pes commettre une nouvelle erreur) ne pouvant pas modifier mon message

J'aimerais si possible que lorsque je sélectionne une cellule ( en cliquant ou en me déplacant dessus) afficher des infos contenues dans un fichier

Je sélectionne une cellule de la colonne B à partir de la ligne 7 et je vois apparaitre (dans un Userform? ) toutes les infos concernant ce cheval (Cf fichier Base Chevaux voir deuxième message) si le cheval est trouvé dans la base. Ce fichier sera enregistré dans le Répertoire Mes Documents Sous Répertoire Equitation.

Dès que je changerais de cellule (sans avoir de validation à faire) les infos "disparaitront".

Mes faibles connaisances en VBA ne me permettent pas de faire ça

J'essayeais d'apter la solution que vous voudrez bien me donner pour la colonne cavaliers

Pour plus de détail je remets le lien du précédent post (et pour avoir les fichiers exemples)

http://www.excel-downloads.com/html/French/forum/read.php?f=1&i=101898&t=101898

D'avance un grand merci à tous car je suis en rade ...
 
@

@+Thierry

Guest
Bonjour Nicolas, Michel, Jean-Marie

En fait Michel, si tu as Access, c'est là que c'est vraiment impressionnant, essaie le test de retour de données dans Excel depuis Access que j'ai fait avec Michel_M Lien supprimé sur 500,000 enregistrements (oui oui Cinq Cent Mille, c'est pas une coquille) !

Pour Olivier, oui je pense que tu t'es plus que mal exprimé car moi j'ai lu ceci : J'aimerais si possible que lorsque je sélectionne une cellule ( en cliquant ou en me déplacant dessus) afficher des infos contenues dans un fichier car là c'est ce que fait déjà USF_Recherche_ADO.xls. (click n'importe où et tu verras)

Maintenant je lis ton post du 07-08-04 10:37 et je vois cette notion de temporisation d'affichage (moi je trouve que c'est vraiment pas bien et lourd, ni vraiment utile, mais bon le client est roi !! lol)

Voici ci-joint une version avec un AutoCloser du UserForm, à évidemment mettre dans le même répertoire que Base_Chevaux.xls en suivant les instructions que j'ai précédemments données.

Bon Dimanche
@+Thierry


PS ici la tempo est de Cinq secondes, pour changer Voir Private Module de Feuille et adapter TimeValue("00:00:05")
 

Pièces jointes

  • USF_Recherche_ADO-Close-Timer.zip
    28.5 KB · Affichages: 18
  • USF_Recherche_ADO-Close-Timer.zip
    28.5 KB · Affichages: 18
  • USF_Recherche_ADO-Close-Timer.zip
    28.5 KB · Affichages: 14
J

Jean-Marie

Guest
Bonjour tout le monde

Thierry, le nouveau fichier en pièce jointe, à été exporté, vérifié (contenu de module et de code) et compressé sur PC.

Je ne comprend ce qui ce passe, est-ce lié à Stuffit expander (application créant des zip) ?.

Rassurez moi, tous les fichiers compressés ont cette anomalie ?

@+Jean-Marie
 

Pièces jointes

  • Affichagecommentaire.zip
    32.4 KB · Affichages: 24
@

@+Thierry

Guest
Bonjour Jean-Marie, re Nicolas, Michel, le Forum

Ahh là c'est impeccable, ça dézippe normalement et je peux ouvrir et constater que ton travail est très ergonomique et fonctionne bien Jean-Marie.

Heureux de te rassurer !

Donc c'est probablement dû à ton "Suffit Expander" qui, lorsque il est dézippé par Win Zip (8.0 ici) est un peu "fracassé" alors... lol

Donc c'est pas la faute des Mac !!

Sinon niveau code VBA, je ne comprends pas pourquoi tu as deux fois Application.OnTime dans la Sub Worksheet_SelectionChange. Et aussi, je sais que tu es "Formuliste" mais je pense que l'on peut éviter de passer par une Formule en N2 pour trouver le numéro de Ligne dans la Base avec une Ch'ti boucle :

'Pour tableaux de taille Moyenne (en centaines de lignes)
With Sheets("Base")
For Each Cell In .Range("A4:A" & .Range("A65536").End(xlUp).Row)
If ActiveCell = Cell Then Ligne = Cell.Row
Next
End With
If Ligne = 0 Then: Exit Sub

For I = 1 To Worksheets("Base").Range("IV3").End(xlToLeft).Column 'suivant le nombre de colonnes dans la base
vComment = vComment & vbLf & Worksheets("Base").Cells(3, I) & " : " & Worksheets("Base").Cells(Ligne, I)
Next I

(En ayant pris soin de déclarer Dim Ligne As Integer, Cell As Range)

Sinon pour des grands tableaux (en millers de lignes) pour aller fissa fissa :

With Sheets("Base")
Tablo = .Range("A4:A" & .Range("A65536").End(xlUp).Row)
End With

For X = 1 To UBound(Tablo)
If ActiveCell = Tablo(X, 1) Then Ligne = X + 3 'décalage du tableau 3 lignes)
Next
...Le reste identique

(En ayant pris soin de déclarer Dim Tablo As Variantn X As Long, Ligne As Long)


Bon Dimanche Rassuré !!
@+Thierry
 
@

@+Thierry

Guest
Oups Sorry Nicolas !!

J'ai toujours confondu et fait des lapsus avec les Stéphanes et les Christophes et avec les Nicolas et les Oliviers !!

Mais au moins, Olivier... Arf, Nicolas !!! celà est-il ce que tu voulais ?

@+Thierry
 
@

@+Thierry

Guest
Areuh Areuh !!

Jean-Marie, pour optimiser les boucles que je t'ai proposé, j'ai oublié le "Exit For" à ajouter dans le cas d'un "Matching" avec ActiveCell...

Exemple
For X = 1 To UBound(Tablo)
If ActiveCell = Tablo(X, 1) Then Ligne = X + 3: Exit For
Next

Ce qui évite de ballayer le reste du tableau... Par contre on n'emploiera pas le Exit For, si on veut vérifier qu'il n'y a pas deux fois le même cheval dans la base :

For X = 1 To UBound(Tablo)
If ActiveCell = Tablo(X, 1) Then
Ligne = X + 3
Item = Item + 1
End If
Next

If Item = 0 Then MsgBox "Pas dans la Base": Exit Sub
If Item > 1 Then MsgBOx "Doublon dans la Base": Exit Sub

(Sous entendu qu'en cas de Doublon, le dernier des Doublons sera celui retourné par "Ligne")

Bon Dimanche
@+Thierry
 
N

Nicolas

Guest
Oui cela va bien m'aider.

En fait je suis chronométreur et juge bénévole sur des concours de saut d'obstacles de chevaux. Il existe des programmes assez sophistiqués mais hélas trop honéreux pour moi. C'est pou celà que je me suis lancé dans la création d'un modeste programme sous Excel que j'essayerais de faire évolouer au fur et à mesure de mes disponibilités. De plus ces programmes sont incompets.Je voudrais donc par la suite intégrer une gestion des performances des cavaliers et pouvoir annoncer au moment du passage Thierry X 1er du Grand Prix de la Baule, 2ème du Grand Prix International de Monaco ...

S'il y a des personnes disposant de temps et des connaisances en informatiques qui désireraient se lancer dans la création d'une application je pourrais leur apporter les connaissances équestres nécessaires.

Merci encore à tous
 
J

Jean-Marie

Guest
Re...

Thierry, merci de tes commentaires (j'apprécie)

En ce qui concerne les deux application.ontime

* la première dans
If vAdress <> "" Then
...
Application.OnTime EarliestTime:=VNow, Procedure:="ChronoComment", Schedule:=False
End If

C'est une obligation, si je ne veux pas "empiler" les procédures ChronoComment et provoquer au final une fatale erreur, il faut donc arrêter l'ancienne temporisation.

* la seconde
VNow = Now + TimeValue("00:00:03")
Application.OnTime VNow, "ChronoComment"


Est-ce une particularité du mac ?, mais si le Timevalue est égal à "00:00:01", je peux arrêter la procédure par un Now + Timevalue("00:00:01") sans erreur de vba mais, si la temporisation est supérieure, il faut que je mémorise dans une variable l'heure d'exécution d'arrêt de la temporisation.

Entre ta démo, il y a une petite variante, Thierry, à chaque changement de cellule active, le temp d'affichage du commentaire est réinitialisé à zéro.

@+Jean-Marie
 
@

@+Thierry

Guest
Re...

Ah oui Nicolas, non c'est bien Nicolas, pas Olivier lol, bon alors je comprends mieux ta demande. Ben si tu as des problèmes dans l'évolution de ton programme, n'hésite pas à revenir sur ce Forum, par contre quant à développer l'appli entière, perso ne compte pas sur moi, je fais ceci professionnelement et je n'ai déjà plus le temps de répondre à la demande !

Pour Jean Marie, je sais bien que tu apprécies et c'est bien pour celà que je me permets de faire ces quelques commentaires qui je crois te t'aideront pour jongler entre "Formuliste" et "VBAiste".

Euh oui, enfin je sais pas trop car je n'ai plus ton code sous les yeux, mais je commence à voir la nécessité de faire un break au lieu de continuer alors la même temporisation si on change de cellule (arf) (Je m'imagine le topo, le User à cliqué sur un cellule, et il click sur une autre, et en dans ce qui reste des 5 secondes il doit avoir eu le temps de lire le contenu du UserForm réactualisé... wow c'est un super User pour avoir le temps de tout lire (lol)...

Tu as parfaitement raison Jean-Marie, en fait j'ai un peu baclé le truc pour rajouter cette demande de Nicolas !! lol (sorry)

Là je suis sur un truc pour le taff, je repasserai plus tard, mais merci de cette judiscieuse remarque Jena-Marie

Bon Dimanche
@+Thierry
 
A

Adrien

Guest
Problème semblable

Bonjour, je ne suis que novice voire meme ignorant en VB, mais on me demande d'effectuer la tâche suivante, qui me semble relativement similaire à celle dont vous parlez, et j'aimerai savoir si quelqu'un peut m'aider :
Je dois, à partir d'excel, éxécuter une macro contenue dans ma base de données access, et copier dans une boite de dialogue la valeur de la colonne B (par exemple) de la ligne d'excel activée lorsque j'appelle la macro, puis valider, pour voir ainsi mon résultat s'afficher. J'ai déja trouvé diverses réponses partielles sur d'autres sites, mais qui ne fonctionnent pas, pour cause de "problème de compilation"....
Si jamais vous pouviez m'aider, je vous en serai infiniment reconnaissant.
Merci d'avance
Adrien
 
J

jérémy

Guest
temporisation sur userform

Bonjour à tous,

j'ai une petite question à vous posée.
Sur un userform, je cherche à le faire disparaitre au bout de X secondes, tout en gardant la possibilité de le fermer par la croix.
J'ai essayé deux méthodes:
_ application.wait, celle ci fonctionnne mais ne me permet pas fermer mon userform avnt la fin de la temporisation puisque excel se met en veille

_ application.ontime, celle ci fonctionnr mais une erreur apparait.
Je pense que celle ci est due à ma variable d'arrêt de la temporisatino.
Comment déclarer une variable d'arrêt??

je suis à l'écoute de toutes propositions.

Merci par avance. Jérémy
 

Statistiques des forums

Discussions
314 203
Messages
2 107 176
Membres
109 766
dernier inscrit
pleutre