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

[coincé]utilisation impossible d'un prog excel+vba sur un autre poste que le mien

15 réponses
Avatar
Alfred WALLACE
bonjour,
je travaille sur un utilitaire qui utilise la progressbar.
pour ce faire j'ai rajouter dans mon editeur vba
"Microsoft StatusBar control ,Version 6.0"

mais, lorsque j'execute le programme sur un autre poste
j'ai un message d'un composant manquant ....

comment je peux =EAtre certain que ma macro-vba pourra
fonctionner sur n'importe quel poste ?

J'utilise pour le moment excel 2000, je passerai dans
quelques semaines =E0 excel 2007.

Merci pour votre aide.

Jos=E9

10 réponses

1 2
Avatar
LSteph
Bonjour,

tu as des exemples sur excelabo.net pour ajouter ref par ID ou par
nom.

Selon la référence faut-il encore compter sur la présence du composan t
ou de la dll sollicitée.

Cordialement.

--
LSteph

On 3 déc, 15:37, Alfred WALLACE wrote:
bonjour,
je travaille sur un utilitaire qui utilise la progressbar.
pour ce faire j'ai rajouter dans mon editeur vba
"Microsoft StatusBar control ,Version 6.0"

mais, lorsque j'execute le programme sur un autre poste
j'ai un message d'un composant manquant ....

comment je peux être certain que ma macro-vba pourra
fonctionner sur n'importe quel poste ?

J'utilise pour le moment excel 2000, je passerai dans
quelques semaines à excel 2007.

Merci pour votre aide.

José
Avatar
Alfred WALLACE
J'y go !

et encore merci et merci et merci ! (pour tes 3 aides !)

José


On 3 déc, 15:48, LSteph wrote:
Bonjour,

tu as des exemples sur excelabo.net  pour ajouter ref par ID ou par
nom.

Selon la référence faut-il encore compter sur la présence du compos ant
ou de la dll sollicitée.

Cordialement.

--
LSteph

On 3 déc, 15:37, Alfred WALLACE wrote:

> bonjour,
> je travaille sur un utilitaire qui utilise la progressbar.
> pour ce faire j'ai rajouter dans mon editeur vba
> "Microsoft StatusBar control ,Version 6.0"

> mais, lorsque j'execute le programme sur un autre poste
> j'ai un message d'un composant manquant ....

> comment je peux être certain que ma macro-vba pourra
> fonctionner sur n'importe quel poste ?

> J'utilise pour le moment excel 2000, je passerai dans
> quelques semaines à excel 2007.

> Merci pour votre aide.

> José


Avatar
michdenis
Bonjour,

Place ce code dans le ThisWorkbook de ton classeur :

Comme mentionner plus bas, le fichier responsable (dll) responsable
de ce contrôle doit être installé sur la machine où tu ouvres le fichier
sinon, il n'y a aucune procédure qui pourra faire fonctionner ton application.

Si tu veux le vérifier, tu peux ajouter à la procédure :

if dir("C:WindowsSysWOW64MSCOMCTL.OCX") ="" then
Msgbox "Fichier absent. "
exit sub
end if

'---------------------------------------------
Private Sub Workbook_Open()

Dim LesRefs As Object, Ref As Object

'Sur Windows7 64 bits
'Fichier reponsable : C:WindowsSysWOW64MSCOMCTL.OCX
'sur windows7 32 bits
'Fichier reponsable : C:WindowsSystem32MSCOMCTL.OCX 'à vérifier

On Error Resume Next
Set LesRefs = ThisWorkbook.VBProject.References
For Each Ref In LesRefs
If Ref.IsBroken Then
LesRefs.Remove Ref
End If
Next
ThisWorkbook.VBProject.References.AddFromGuid _
"{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}", 2, 0
End Sub
'---------------------------------------------

Sur une nouvelle machine, le code va fonctionner, mais si tu regardes
dans la boîte d'outils du formulaire, le contrôle lui-même sera absent.
il n'existe pas de code qui ajoute le contrôle à la boîte d'outils.


MichD
--------------------------------------------
"Alfred WALLACE" a écrit dans le message de groupe de discussion :


bonjour,
je travaille sur un utilitaire qui utilise la progressbar.
pour ce faire j'ai rajouter dans mon editeur vba
"Microsoft StatusBar control ,Version 6.0"

mais, lorsque j'execute le programme sur un autre poste
j'ai un message d'un composant manquant ....

comment je peux être certain que ma macro-vba pourra
fonctionner sur n'importe quel poste ?

J'utilise pour le moment excel 2000, je passerai dans
quelques semaines à excel 2007.

Merci pour votre aide.

José
Avatar
Alfred WALLACE
Bonsoir,
merci pour ton aide, malheureusement .....j'ai rien capté....(lol)

j'ai cru comprendre que, pour un userform, il fallait préférablement
utiliser
la sintaxe "userform1.control.propriété" que
"me.control.propriété" ....

c'est bien çà ou je me trompe ?

je tourne sous W2000, et je vais bientot migrer
sous vista.

certains postes qui sont deja sous vista ne posent aucun problème.
beaucoup de postes sous Windows 2000, fonctionnent tres bien ....


avez vous d'autres pistes vers lesquelles je pourrai gratter ?

merciiiii

José








On 3 déc, 20:12, "michdenis" wrote:
Bonjour,

Place ce code dans le ThisWorkbook de ton classeur :

Comme mentionner plus bas, le fichier responsable (dll) responsable
de ce contr le doit tre install sur la machine o tu ouvres le fichier
sinon, il n'y a aucune proc dure qui pourra faire fonctionner ton applica tion.

Si tu veux le v rifier, tu peux ajouter la proc dure :

if dir("C:WindowsSysWOW64MSCOMCTL.OCX") ="" then
    Msgbox "Fichier absent. "
    exit sub
end if

'---------------------------------------------
Private Sub Workbook_Open()

Dim LesRefs As Object, Ref As Object

'Sur Windows7 64 bits
'Fichier reponsable : C:WindowsSysWOW64MSCOMCTL.OCX
'sur windows7 32 bits
'Fichier reponsable : C:WindowsSystem32MSCOMCTL.OCX ' v rifier

On Error Resume Next
Set LesRefs = ThisWorkbook.VBProject.References
For Each Ref In LesRefs
    If Ref.IsBroken Then
        LesRefs.Remove Ref
    End If
Next
ThisWorkbook.VBProject.References.AddFromGuid _
    "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}", 2, 0
End Sub
'---------------------------------------------

Sur une nouvelle machine, le code va fonctionner, mais si tu regardes
dans la bo te d'outils du formulaire, le contr le lui-m me sera absent.
il n'existe pas de code qui ajoute le contr le la bo te d'outils.

MichD
--------------------------------------------
"Alfred WALLACE"  a crit dans le message de groupe de discussion :


bonjour,
je travaille sur un utilitaire qui utilise la progressbar.
pour ce faire j'ai rajouter dans mon editeur vba
"Microsoft StatusBar control ,Version 6.0"

mais, lorsque j'execute le programme sur un autre poste
j'ai un message d'un composant manquant ....

comment je peux tre certain que ma macro-vba pourra
fonctionner sur n'importe quel poste ?

J'utilise pour le moment excel 2000, je passerai dans
quelques semaines excel 2007.

Merci pour votre aide.

Jos
Avatar
Gloops
Alfred WALLACE a écrit, le 03/12/2010 15:37 :
bonjour,
je travaille sur un utilitaire qui utilise la progressbar.
pour ce faire j'ai rajouter dans mon editeur vba
"Microsoft StatusBar control ,Version 6.0"

mais, lorsque j'execute le programme sur un autre poste
j'ai un message d'un composant manquant ....

comment je peux être certain que ma macro-vba pourra
fonctionner sur n'importe quel poste ?

J'utilise pour le moment excel 2000, je passerai dans
quelques semaines à excel 2007.

Merci pour votre aide.

José




Bonjour,

Il y a quelque temps de cela, j'ai développe une barre de progression
basée sur deux traits. A cette époque, si la longueur d'un trait
descendait à 0, le trait disparaissait, alors je mettais un autre trait
plus court devant le début, histoire de masquer la longueur minimum.

ça fait lourdingue, mais c'est complètement indépendant de tout pro blème
de déploiement.
Avatar
bcar
Bonjour,

Il y a quelque temps de cela, j'ai développe une barre de progression
basée sur deux traits. A cette époque, si la longueur d'un trait
descendait à 0, le trait disparaissait, alors je mettais un autre trait
plus court devant le début, histoire de masquer la longueur minimum.

ça fait lourdingue, mais c'est complètement indépendant de tout problème
de déploiement.




Je ne vois pas bien l'intérêt de cette histoire de couverture de traits.
- Soit c'est toi qui dessine les traits et alors il suffit de ne plus le
dessiner
- Soit tu utilise un objet trait ou bouton ou autre et alors il te
suffit de le rendre invisible avec n'importe quelle taille quand il
devrait avoir la taille 0

Mais quelque chose m'échappe peut-être.
Avatar
Gloops
bcar a écrit, le 08/12/2010 16:22 :
Bonjour,

Il y a quelque temps de cela, j'ai développe une barre de progressio n
basée sur deux traits. A cette époque, si la longueur d'un trait
descendait à 0, le trait disparaissait, alors je mettais un autre tr ait
plus court devant le début, histoire de masquer la longueur minimum.

ça fait lourdingue, mais c'est complètement indépendant de tout problème
de déploiement.




Je ne vois pas bien l'intérêt de cette histoire de couverture de tr aits.
- Soit c'est toi qui dessine les traits et alors il suffit de ne plus l e
dessiner
- Soit tu utilise un objet trait ou bouton ou autre et alors il te
suffit de le rendre invisible avec n'importe quelle taille quand il
devrait avoir la taille 0

Mais quelque chose m'échappe peut-être.





Te rappelles-tu qu'il est question d'émuler une barre de progression ?
Le trait doit faire apparaître une variation de 0 à 100, or à 0 il
disparaît. Donc, il faut une longueur minimale, par exemple 10. Mais,
10, ça ne fait pas zéro. Donc, il faut masquer les 10 de départ, po ur
que la largeur visible varie effectivement de 0 à 100, pour une longueu r
effective qui varie de 10 à 110.

ça marche ?
Avatar
bcar
Le 08/12/2010 22:06, Gloops a écrit :
bcar a écrit, le 08/12/2010 16:22 :
Bonjour,

Il y a quelque temps de cela, j'ai développe une barre de progression
basée sur deux traits. A cette époque, si la longueur d'un trait
descendait à 0, le trait disparaissait, alors je mettais un autre trait
plus court devant le début, histoire de masquer la longueur minimum.

ça fait lourdingue, mais c'est complètement indépendant de tout problème
de déploiement.




Je ne vois pas bien l'intérêt de cette histoire de couverture de traits.
- Soit c'est toi qui dessine les traits et alors il suffit de ne plus le
dessiner
- Soit tu utilise un objet trait ou bouton ou autre et alors il te
suffit de le rendre invisible avec n'importe quelle taille quand il
devrait avoir la taille 0

Mais quelque chose m'échappe peut-être.





Te rappelles-tu qu'il est question d'émuler une barre de progression ?
Le trait doit faire apparaître une variation de 0 à 100, or à 0 il
disparaît. Donc, il faut une longueur minimale, par exemple 10. Mais,
10, ça ne fait pas zéro. Donc, il faut masquer les 10 de départ, pour
que la largeur visible varie effectivement de 0 à 100, pour une longueur
effective qui varie de 10 à 110.

ça marche ?




Ben oui, ta méthode marche, mais je la trouve légèrement alambiquée
alors qu'il suffirait
- soit de ne pas dessiner le trait pour la valeur 0
- soit de mettre, si c'est un objet provenant d'un contrôle quelconque,
la propriété visible du trait a "false"
- ou encore de changer la couleur du trait quand on arrive à 0.

de plus je pense que l'intérêt de cette manip est rare (pas inexistant)
étant donné qu'en général une barre de progression progresse, donc il
suffit de dessiner/afficher à partir de la valeur minimum
utile/nécessaire au dessus de 0.

mais sinon ca marche...
Avatar
Gloops
bcar a écrit, le 09/12/2010 09:56 :
Le 08/12/2010 22:06, Gloops a écrit :
bcar a écrit, le 08/12/2010 16:22 :
Bonjour,

Il y a quelque temps de cela, j'ai développe une barre de progress ion
basée sur deux traits. A cette époque, si la longueur d'un trait
descendait à 0, le trait disparaissait, alors je mettais un autre trait
plus court devant le début, histoire de masquer la longueur minimu m.

ça fait lourdingue, mais c'est complètement indépendant de tou t problème
de déploiement.




Je ne vois pas bien l'intérêt de cette histoire de couverture de traits.
- Soit c'est toi qui dessine les traits et alors il suffit de ne plus le
dessiner
- Soit tu utilise un objet trait ou bouton ou autre et alors il te
suffit de le rendre invisible avec n'importe quelle taille quand il
devrait avoir la taille 0

Mais quelque chose m'échappe peut-être.





Te rappelles-tu qu'il est question d'émuler une barre de progression ?
Le trait doit faire apparaître une variation de 0 à 100, or à 0 il
disparaît. Donc, il faut une longueur minimale, par exemple 10. Mais ,
10, ça ne fait pas zéro. Donc, il faut masquer les 10 de départ, pour
que la largeur visible varie effectivement de 0 à 100, pour une long ueur
effective qui varie de 10 à 110.

ça marche ?




Ben oui, ta méthode marche, mais je la trouve légèrement alambiqu ée
alors qu'il suffirait
- soit de ne pas dessiner le trait pour la valeur 0
- soit de mettre, si c'est un objet provenant d'un contrôle quelconqu e,
la propriété visible du trait a "false"
- ou encore de changer la couleur du trait quand on arrive à 0.




C'est-à-dire que l'intérêt (de ne s'occuper que de la longueur) est que
le traitement soit le même quelle que soit la valeur. C'est juste pour
simplifier.

En fait une fois qu'on a une valeur supérieure, à la valeur minimale,
seule la longueur qui dépasse la longueur minimale doit être visible.
Or, si on met le trait visible, on voit tout.


de plus je pense que l'intérêt de cette manip est rare (pas inexist ant)
étant donné qu'en général une barre de progression progresse, d onc il
suffit de dessiner/afficher à partir de la valeur minimum
utile/nécessaire au dessus de 0.

mais sinon ca marche...



Ah mais si on a la barre de progression d'installée, bien entendu, on n e
s'embête pas avec des traits. L'intérêt de la manip est de s'affran chir
des problèmes de déploiement liés à la référence nécessaire pour la
barre de progression. Le problème peut se présenter dans le cas d'un
parc hétérogène.
Avatar
Maude Este
Bonsour®

"Gloops" a écrit :
C'est-à-dire que l'intérêt (de ne s'occuper que de la longueur) est que le
traitement soit le même quelle que soit la valeur. C'est juste pour
simplifier.



travailler alors en % ...
!!
mais cela suppose de connaitre au préalable la valeur Max !!!!
c-a-d si l'objet du traitement est dénombrable : longueur, nombre, durée
quantifiable etc...
impossible pour une durée aléatoire dépendante d'un process externe...
1 2