Comment créer, placer et dimensionner un objet sur une feuille Excel

Résolu
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 - 11 mars 2012 à 18:03
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 - 23 mars 2012 à 10:07
Bonjour le Forum, bonjour à tous ceux qui passeront par ce post.

J'ai une petite question à laquelle je ne parviens pas à répondre.

Je cherche désespérément à partir d'un code vba, à créer un objet image (Contrôle image), de le placer sur la feuille, de le dimensionner correctement puis de gérer ensuite certaines de ses propriétés qui m’intéressent.

Pour le moment j'utilise le code suivant qui ne fonctionne pas parfaitement :

ActiveSheet.OLEObjects.Add(ClassType:="Forms.Image.1", Link:=False, _
DisplayAsIcon:=False, Left:=[N16].Left, Top:=[N16].Top, Width:=210, Height:=100).Select

ActiveSheet.Image1.Left = Range("B2").Left
ActiveSheet.Image1.Top = Range("B2").Top
ActiveSheet.Image1.Widht = Range("B2:F10").Widht
ActiveSheet.Image1.Height = Range("B2:F10").Height
ActiveSheet.Image1.Picture = LoadPicture("C:\Documents and Settings\BlaBla.bmp")


Cela me créé bien un contrôle image sur ma feuille mais je ne parviens pas le manipuler ensuite. "Image1" n'est en gros pas reconnu. Pourquoi ???


Par contre j'ai remarqué que si je place un contrôle image sur la feuille mauellement (sans code) et bien ensuite par code je suis capable de le manipuler.

Hors moi je souhaiterais créer par code le contrôle image, le placer, le dimensionner ensuite.


Ou se trouve mon erreur ? J'ai l'impression que c'est la manière de créer mon objet qui n'est pas bonne.



Merci à ceux qui m'éclaireront.


Bien cordialement,

André

48 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 mars 2012 à 17:47
J'en reste assez baba car tu sembles avoir mis par hasard le doigt sur un sacré bug.
Tout se passe comme si, dans un autre fil, on avait détruit la fenêtre du UserForm !
Et la chose ne se passe pas lors de la création de l'image, mais au retour de ce que je pense ^tre un fil distinct !
La preuve

ajoute ce msgbox ici :

......
Contrôle_Image1.Object.PictureSizeMode = 3
Contrôle_Image1.Object.BackStyle = 0
Contrôle_Image1.Object.SpecialEffect = 6
msgbox "le canard est encore vivant ici. Et il va mouriri au end sub !"
End Sub


Et rien ne semble pouvoir contrecarrer ce machin à la zazou là !
Voilà une bonne demie-heure que je tente en vain de forcer la fenêtre à rester en premier plan à l'aide de fonctions de l'api de Windows ===>> des figues ===>> elle semble carrément ne plus exister.
Je vais me reposer un peu et tenter de voir en mémoire (dur dur).


____________________
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
12 mars 2012 à 18:30
Wep, j'avais aussi testé le coup du "msgbox" à divers endroits du code, dont un placé juste à la toute fin.
J'ai moi aussi pu constaté que le formulaire était bien la, pourtant après l'instruction suivante "End Sub" il disparaissait toujours.


Mais si l'on n'ajoute pas de contrôle image, alors tout va bien. C'est bien qu'il doit y avoir une interaction à un moment je me dis. Non ?

Dans tous les cas c'est quand même bizarre ce truc la.

Tous mes tests mon laissé béa
0
MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
12 mars 2012 à 18:48
J'ai aussi parfois des "dysfonctionnements", en tout cas des choses improbables,
même en version 2003 qu'il faut contourner tout en évitant l'usine à gaz ...

Mais je n'ai pas rencontré ton problème vu que j'évite les .OLEObject.

Sinon teste la création de ton bouton par ta méthode n°2 (j'utilise la même)
et dans la volée affecte-lui directement la propriété .OnAction = "NomDuModule.TRAITEMENT_IMAGE"
afin d'éviter le Run "TRAITEMENT_IMAGE", on se sait jamais ...

___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
0
MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
12 mars 2012 à 19:03
Exemple de création d'un bouton (le Me représentant une feuille de calcul) :
            With Me.Buttons.Add(Me.[I5].Left + 30.75, Me.[I5].Top - 71.25, 58.5, 16.5)
                           .Name = "Actualiser"
                .Characters.Text = .Name
                       .OnAction = "ThisWorkbook.Workbook_Open"
            End With

___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
0

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

Posez votre question
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
12 mars 2012 à 19:15
Merci MarcPL pour l'exemple de création du bouton.

Malheureusement, moi il me faut un formulaire pour mon application. Le bouton va resté attaché à une feuille, tandis que le formulaire lui restera attaché à la fenêtre du classeur...donc plus de mobilité.

Je ne veux pas chercher une feuille pour lancer une application, mais toujours avoir un bouton visible dans le coin supérieur gauche de ma fenêtre.

Ce que fait très bien :

UserForm1.Show 'Afficher l'UserForm1
UserForm1.Left = 0 'Fixe la position de l'UserForm1
UserForm1.Top = 0


J'ai testé avec un bouton et tout fonctionne. Sauf que voilà, moi c'est le formulaire que je vise actuellement.

Merci en tout cas de bien vouloir aider
0
MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
12 mars 2012 à 19:22
Sinon utilise une barre d'outils personnalisée attachée au classeur ...
Je sais, peut-être too much pour un seul "bouton" mais rentable si t'en as besoin d'autres ...
___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
0
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
12 mars 2012 à 19:24
Je pense que l'on peut soit affronter directement le problème et trouver la cause de tout ça. Soit on peut essayer de contourner en douceur le problème.

Sachant que les deux méthodes sont inintéressantes, il faut essayer.

Pour la méthode qui consiste à affronter directement le problème, j'ai malheureusement épuisé toutes mes idées (j'en avais pas beaucoup en même temps )

Pour la solution de rechange, il y a 2 voies.

Soit on agit sur le formulaire qui se cache sans arrêt, soit on agit sur la création du contrôle image qui cause tout ce désordre.

Pour le formulaire, il me faut exactement la même chose. Un bouton d'action serait une bonne alternative, mais n'est pas adapté pour ce cas précis.
Il reste encore la création du contrôle image via les collections.

J'accepterais bien une solution qui me fasse pratiquement la même chose que le code actuel. C'est à dire :

'=================================================================
'Création, insertion, placement et dimensionnement d'un object sur la feuille (Contrôle image dans cet exemple)
'Set Contrôle_Image1 ActiveSheet.OLEObjects.Add(ClassType:="Forms.Image.1", Link:=False, _
DisplayAsIcon:=False, Left:=210, Top:=124.5, Width:=123, Height:=49.5)

'=============================================================
'On contrôle ensuite ici l'ensemble des propriétés de l'objet sur lequelles ont souhaite agir
'Contrôle_Image1.Name "Image1"
Contrôle_Image1.Left = Range("N16").Left
Contrôle_Image1.Top = Range("N16").Top
Contrôle_Image1.Width = Range("N16:P21").Width
Contrôle_Image1.Height = Range("N16:P21").Height
Contrôle_Image1.Object.Picture = LoadPicture(Fichier_Image)
Contrôle_Image1.Object.PictureAlignment = 2
Contrôle_Image1.Object.PictureSizeMode = 3
Contrôle_Image1.Object.BackStyle = 0
Contrôle_Image1.Object.SpecialEffect = 6


(Je pense que c'est la solution la plus simple, mais pas la plus conforme non plus sniff). A voir.


Il y a quand même un certain nombre de choix à faire pour pouvoir s'en sortir...C'est déjà bon signe.

André
0
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
12 mars 2012 à 19:29
Sinon utilise une barre d'outils personnalisée attachée au classeur ...
Je sais, peut-être too much pour un seul "bouton" mais rentable si t'en as besoin d'autres ...


J'ai en effet 4 ou 5 bouton que je place dans ce formulaire. Dans cet exemple "épuré", il n'y en a qu'un seul. Mais j'en ai déjà 4 actifs.

Si mon formulaire se fait la malle, c'est mes 4 boutons de commande qui disparaissent eux aussi. Et donc qui handicapent tout mon code.

La barre d'outils pourrait être une alternative...Mais vu mon niveau, je vois déjà bien que ça risque d'être de la haute voltige pour moi.

J'aimerais autant un code simple -> Finalement l'idée du formulaire reste encore la meilleure on dirait^^

Va falloir affronter le problème de face je pense....

Aie aie aie lol.


André
0
MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
12 mars 2012 à 21:08
Pour t'attaquer au problème de face, attribue manuellement dans les propriétés du bouton
directement la macro TRAITEMENT_IMAGE, des fois que ... (RUN à éviter pour du code local)
Pour la suite je laisse la main à ucfoutu, un challenge qui l'intéresse sûrement !

Sinon effectivement la barre personnalisée me semble la meilleure alternative et se construit entièrement
via l'interface d'Excel, rien en VBA, donc pas vraiment compliqué ...
Il faut juste penser à la rattacher au classeur avant de fermer Excel pour ne pas la perdre.

___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
0
mjpmjp Messages postés 115 Date d'inscription dimanche 6 avril 2003 Statut Membre Dernière intervention 29 juin 2012
13 mars 2012 à 10:39
bonjour
le form a une propriete "nodal"
ce qui peut rendre independant le form
@+JP
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
13 mars 2012 à 11:29
Re-moi :
Juste pour dire que je n'ai pas, bien au contraire, abandonné cette discussion.
J'ai passé des heures entières à faire des tests en tous genres ===>>>
il s'agit bel et bien d'un sacré bug de VBA/Excel et tout semble être généré en coulisses du seul fait du dessin. J'ai de plus en plus l'impression de ce que deux fils sont présents à un instant donné.
Les conséquences de ce bug vont encore plus loin ===>>> j'ai par exemple découvert que disparaissait alors également de la mémoire une variable publique que j'essayais d'utiliser en tremplin ! On dirait bien que l'application va "se ballader" ailleurs et que, lorsqu'elle revient, VBA est "à poil" de certaines choses (rectangle de l'Userform, variables publiques gérées entre une étape et l'autre ... !). Mais également : perte de certaines instructions à la sortie et ... plus grave encore ... perte de certains verbes de VBA, avec, à la clé ===>>> un plantage total !

Je suis en train de travailler sur une parade assez tortueuse pour m'en sortir. J'ai presque réussi, mais il me faut aller chercher un repaire sur la feuille elle-même (en dur, donc, en quelque sorte).
Je pense que je serai en mesure de présenter une solution avant ce soir. Elle sera assez tortueuse (ce que je n'aime en général pas).
Cela me rappelle un poême assez dur de François Villon



____________________
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
13 mars 2012 à 12:31
Ucfoutu, je n'ai pas pensé un seul instant que tu "abandonnerais" la discussion. Bien au contraire je sentais d'avance que cela piquerai ta curiosité te connaissant

Et puis si tu ne trouves pas de solution, ce n'est pas grave. La vie continue hein^^
Déjà que j'ai du mal avec des codes simples, alors si en plus il s'agit de fixer des bugs logiciel...


Fait de ton mieux et ce sera très bien. Mais c'est vrai que c'est tordu cette affaire. Au moment ou je savais jouer avec les objets et leurs propriétés, bim c'est grillé

J'ai un peu les boules j'avoue.

J'attends de voir la solution que tu propose, mais je sens bien que ce sera à base d'acrobaties pour s'en sortir. Tant que c'est viable, moi ça me conviens au final.


André

Ps : Courage pour le coup !
0
mjpmjp Messages postés 115 Date d'inscription dimanche 6 avril 2003 Statut Membre Dernière intervention 29 juin 2012
13 mars 2012 à 12:47
bonjour

ce n'est pas nodal mais ShowModal
avec Excel v10
si ShowModal = False tout est ok et le form se ferme
si ShowModal = True apres dbclic bouton
"Erreur d'exécution '400'"
"Feuille déjà affichée;affichage modal impossible"

@+JP
0
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
13 mars 2012 à 14:33
Avec la version 2007 que j'utilise, si ShowModal est à true alors le formulaire reste bien présent à l'écran. Mais le problème est que je n'ai pas la main sur la feuille. Du coup je ne peux rien faire d'autre si ce n'est cliquer sans cesse sur le formulaire.

Si je met la propriété à ShowModal = False, alors le formulaire se ferme en fin d'exécution. Du coup j'ai la main sur la feuille, mais le formulaire disparait.

Le ShowModal ne résous donc pas mon problème je trouve.

André

PS : Je n'ai pas cette erreur de feuille déjà affichée chez moi.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
14 mars 2012 à 18:53
Bon (re-moi)
J'ai réussi l'exploit de planter Excel au rythme fabuleux d'entre 5 et 6 fois par demie-heure !
Je confirme tout ce que j'ai dit plus haut, y compris en ce qui concerne la disparition, dans certaines circonstances, de verbes de VBA ! Ils ne disparaissent heureusement pas de l'application Excel, mais de la seule appli en cours (le classeur).
Où en suis-je ? ===>>
Je fais maintenant réapparaître l'userform en sélectionnant n'importe quelle cellule. Cette réapparition est subordonnée à une espèce de "switch" que j'ai mis en place. L'userform est maintenant doté d'un second bouton, qui permet de passer d'un état à l'autre en fermant l'userform.
Si fermé ===>> une sélection de cellule ne le fait pas réapparaître. Si en cours" ==>> réapparition.
C'est déjà beaucoup mieux, mais je vais chercher encore pour éviter ce geste (en précisant que toute tentative de modifier la sélection dynamiquement reste "lettre morte" car un autre "fil" semble avaler goulument l'instruction. Celle-ci s'exécute bien, mais tant que l'autre "zazou" de fil n'a pas décidé de rendre la main, l'évènement n'est pas constaté !)
Si tu veux déjà le code en l'état ===>> je le mets-là.
(ce qui ne m'empêche pas de continuer à chercher, bien sûr)
Tu dis.

____________________
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
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
15 mars 2012 à 16:48
wow !
Je viens à l'instant de trouver une feinte.
Elle a été trouvée sur la base de tout ce que j'ai exposé plus haut en ce qui concerne certaines "pertes".
J'ai cherché partout quelle instruction l'appli pourrait ne jamais perdre. Je l'ai trouvée
Je continue avec pleins d'essais pour m'assurer de ce que tout va bien à tous coups et reviens avec ce minuscule ajout. Vous le verrez : ce "n'est pas piqué des vers" !
Grâce à cette discussion, on aura mis non seulement le doigt sur un bug de Excel/VBA, mais également sur ce qui pourrait mettre quelque peu en exergue le cheminement de l'application Excel.

Il est alors vraisemblable que j'ouvrirai une autre discussion complémentaire à ce propos et solliciterai que les plus avancés d'entre nous (pas seulement en VBA) "se penchent" sur ce cas et tentent (je dis bien tentent) d'en tirer des conclusions qui pourraient s'avérer utiles, par-delà le présent problème.

A très bientôt !


____________________
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
MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
15 mars 2012 à 17:24
Il y a longtemps je suis tombé sur des trucs bizarres, déjà dans une version où le VBA était en français (95?)
puis aussi dans la version 98 où pour des besoins professionnels j'ai incliné pour les Userform et/ou les barres d'outils personnalisées, bref en évitant au possible les .OleObject.
Mais je ne me rappelle plus du pourquoi du comment, des collègues y avaient aussi laissé des plumes
dont un certifié ...   Donc je ne suis pas trop étonné, il y a toujours une constance chez MS Office !

Bref je me prépare pour la suite !  

___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
15 mars 2012 à 17:40
Alors voilà :
Sur ce post : uniquement la solution (j'ouvrirai demain une autre discussion de fond).

code dans le module des macros :

Option Explicit
Public Sub reprise()
    UserForm1.Show
End Sub

Sub TRAITEMENT_IMAGE()
  Application.ScreenUpdating = False
  Application.DisplayAlerts = False
  Application.OnTime Now, "reprise" '<<<<<<<<<ici
  Call CONSTRUCTION_FEUILLE
  DoEvents
  Application.ScreenUpdating = True 'Rétablit l'affichage
  Application.DisplayAlerts = True 'Rétablit les alertes
End Sub

Private Sub CONSTRUCTION_FEUILLE()
  Dim Contrôle_Image1 As OLEObject 'Déclaration des variables
  Dim Fichier_Image As String

  For Each Contrôle_Image1 In ActiveSheet.OLEObjects
    Contrôle_Image1.Delete
  Next

  Fichier_Image = "D:\bateau.bmp"

  '=================================================================
  'Création, insertion, placement et dimensionnement d'un object sur la feuille (Contrôle image dans cet exemple)
  'Set Contrôle_Image1 ActiveSheet.OLEObjects.Add(ClassType:="Forms.Image.1", Link:=False, _
  DisplayAsIcon:=False, Left:=210, Top:=124.5, Width:=123, Height:=49.5)

  '=============================================================
  'On contrôle ensuite ici l'ensemble des propriétés de l'objet sur lequelles ont souhaite agir
  'Contrôle_Image1.Name "Image1"
  Contrôle_Image1.Left = Range("N16").Left
  Contrôle_Image1.Top = Range("N16").Top
  Contrôle_Image1.Width = Range("N16:P21").Width
  Contrôle_Image1.Height = Range("N16:P21").Height
  Contrôle_Image1.Object.Picture = LoadPicture(Fichier_Image)
  Contrôle_Image1.Object.PictureAlignment = 2
  Contrôle_Image1.Object.PictureSizeMode = 3
  Contrôle_Image1.Object.BackStyle = 0
  Contrôle_Image1.Object.SpecialEffect = 6
End Sub

Pour le userform :
ajouter un bouton QUITTER (pour pouvoir quitter proprement)
Option Explicit

Private Sub QUITTER_Click()
  DoEvents
  Me.Hide
  Unload Me
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
   Cancel = 1
End Sub

Private Sub CommandButton1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 'Quand on double-clic pour lancer
  TRAITEMENT_IMAGE
End Sub


Je n'ai ajouté que :
- la procédure "reprise"
- la ligne signalée par <<<<<<<<ici

Regardons ce qu'elle fait : elle appelle ontime, seule instruction que VBA a pu garder en mémoire (toutes les autres se "perdent" dans la nature ! Nous nous payons même le luxe de l'appeler sans délai (Now !)
On pourrait croire qu'il suffirait alors d'appeler directement Reprise ? === >> cette instruction se perdrait (et ce, quel que soit l'endroit où on la placerait tant dans CONTRUCTION_FEUILLE que dans TRAITEMENT_IMAGE

ETONNANT !
Donc :
- solution trouvée pour cette discussion
- intérêt à ouvrir une discussion de fond pour tenter d'éclaircir (me lire plus haut). J'ouvre cette autre discussion ce soir ou demain.
____________________
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
15 mars 2012 à 19:53
Bonsoir le Formum, MarcPL, Ucfoutu

Alors je viens aux nouvelles. Tout d'abord je vois que ça bosse dure dis donc !
Content de voir que cette curiosité anime la discussion. Ucfoutu tu fais bien d'ouvrir un autre sujet entre "pro". C'est une bonne idée je trouve.

Décidément mes problèmes t'en font voir de toutes les couleurs on dirait

Bien, je viens à l'instant de tester la modification que tu propose dans le post ci-dessus. Tout d'abord je voulais dire que j'ai été surpris de voir le faible nombre de modifications à apporter au code pour passer outre le problème.
Seulement 4 petites lignes de code quand même. C'est remarquable je trouve. C'est en tout cas beaucoup moins casse pied que l'idée que je m'en faisais. Oufff

Je confirme donc bien que de mon coté la solution proposée par Ucfoutu fonctionne impeccablement. Rien à dire pour le moment. C'est bien je trouve. Bravo à toi en tout cas. Ça n'a pas du tout été chose aisée j'imagine pour parvenir à cette solution. Faire planter Excel !!! Et bé

En tout cas ça fonctionne pour le moment. Je vais donc utiliser cette solution et j'irais jeter un œil de temps à autre sur la future discussion que tu vas ouvrir Ucfoutu. Je serai ainsi au courant d'une éventuelle modification du code qui serai plus adaptée que celle qui est proposée actuellement.

On sait jamais. Pour l'heure, celle-ci me conviens à merveille. Simple et efficace à priori. Merci à pour ton investissement Ucfoutu.

Bien cordialement,

André

Ps : Avant de clore définitivement cette discussion, j'ai 2 remarques dont j'aimerai avoir des réponses.

La première :

  Call CONSTRUCTION_FEUILLE
  DoEvents


Que viens faire ce DoEvents, à quoi sert il ? Je ne l'ai pas intégré dans mon code. Pourtant en cherchant sur le net, on dirait à première vu que ça a un rapport direct avec les formulaires en cours. Donc je préfère te poser directement la question. On s'en sert pour quoi d'habitude ? Vu que si je ne le met pas, ça fonctionne quand même.

La deuxième :

Private Sub CommandButton1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 'Quand on double-clic pour lancer
  TRAITEMENT_IMAGE
End Sub


Dans mon code standard, j'utilise Run et toi non. Quelles différences entre les deux, que faut il choisir dans mon cas, et surtout quels sont les critères pour choisir la bonne méthode ? La encore, si j'utilise Run, tout fonctionne très bien. Mais j'aimerais comprendre. Ce n'est pas la première fois que l'on me conseille d'oublier Run.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
15 mars 2012 à 19:56
Run est superfetaroire
DoEvents n'est là que par précaution (il laisse le système "reprendre un peu ses droits et la main").


____________________
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
Rejoignez-nous