Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Pages: 1
Bonjour,
Je cherche la bonne syntaxe pour faire avec PB via l'OLE Excel la définition d'une dropdown (définition d'une liste dans Excel) et l'utilisation de cette dropdown dans une autre feuille du fichier Excel sur certaines zones du fichier.
Merci d'avance,
Hors ligne
wazou1812 a écrit:
Bonjour,
Je cherche la bonne syntaxe pour faire avec PB via l'OLE Excel la définition d'une dropdown (définition d'une liste dans Excel) et l'utilisation de cette dropdown dans une autre feuille du fichier Excel sur certaines zones du fichier.
Merci d'avance,
Coucou,
Alors la dropdown dans Excel avec Powerbuilder ça ne tente personne ???
Hors ligne
Bonjour, les macros sont tes amies pour trouver la syntaxe :
With Selection.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=$A$2:$A$4" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .ShowInput = True .ShowError = True End With
Hors ligne
erasorz a écrit:
Bonjour, les macros sont tes amies pour trouver la syntaxe :
Code: vb
With Selection.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=$A$2:$A$4" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .ShowInput = True .ShowError = True End With
Bonjour,
Oui, mais après le plus compliqué (pour moi) est de trouver la bonne syntaxe en PB avec par exemple la correspondance :
pour IncellDropdown ,
ou même .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=$A$2:$A$4"
A part tâtonner, pour l'instant je n'ai pas trouver d'autres techniques plus rapide (et plus professionnel).
Hors ligne
cela dit les dropdowns en Excel sont limités à 8 items, donc ça ne sera pas forcément utile pour toi...
Hors ligne
erasorz a écrit:
cela dit les dropdowns en Excel sont limités à 8 items, donc ça ne sera pas forcément utile pour toi...
bonjour,
Si, je veux reproduire en PB un exemple de fichier donné par un utilisateur.
Le besoin est bien clairement défini, il faut juste que j'arrive à convertir la macro Excel en code PB via l'OLE.
Hors ligne
wazou1812 a écrit:
Oui, mais après le plus compliqué (pour moi) est de trouver la bonne syntaxe en PB avec par exemple la correspondance :
pour IncellDropdown ,
ou même .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=$A$2:$A$4"
Il te faut instancier un objet OLE adéquat (genre Excel.Application) puis d'invoquer les méthodes par leur nom. Tu peux t'inspirer de l'aide PB, en particulier les exemples associés aux fonctions de OLEObject. Attention, les appels sont dynamiques, aucun contrôle ne peut être fait à la compilation. Teste plutôt trois fois qu'une le code résultant...
PB ne permet pas de nommer les paramètres quand il invoque une méthode. Tu devras donc envoyer, dans l'ordre, tous les paramètres au moins jusqu'au dernier que utilises.
Quant aux constantes, elles sont visibles (tout comme les méthodes avec leur ribambelle de paramètres) dans le Visual Basic Editor. Il te suffit de repérer une énumération, d'en sélectionner le membre qui t'intéresse, et de regarder en bas de la fenêtre la valeur associée.
Bon courage !
Hors ligne
Bonjour,
N'ayant pas réussi a retranscrire la dropdown de Excel dans Powerbuilder, j'ai finalement fait un "modèle" dans Excel avec la constitution des dropdown dans Excel.
Ensuite, j'importe le modèle avec Pb et j'alimente simplement les données dans les dropdown. Et comme j'ai un peu de chance, le format des cellules est conservé.
Merci à tous,
Hors ligne
Salut, c'est trop tard mais pour ceux qui en auront besoin, ce code permet d'ajouter une listbox :
Par exemple une liste Yes/No :
il faut que les valeurs soient séparées par un ;
ls_val = 'Yes;No'
lxlSub.Cells(ll_ligne,i - li_nb_masquer + 1).Validation.Delete()
lxlSub.Cells(ll_ligne,i - li_nb_masquer + 1).Validation.Add(3,1,1,ls_val)
lxlSub.Cells(ll_ligne,i - li_nb_masquer + 1).Validation.IgnoreBlank = True
lxlSub.Cells(ll_ligne,i - li_nb_masquer + 1).Validation.InCellDropdown = True
lxlSub.Cells(ll_ligne,i - li_nb_masquer + 1).Validation.InputTitle = ""
lxlSub.Cells(ll_ligne,i - li_nb_masquer + 1).Validation.ErrorTitle = "Choice"
lxlSub.Cells(ll_ligne,i - li_nb_masquer + 1).Validation.InputMessage = "Choice " + ls_val
lxlSub.Cells(ll_ligne,i - li_nb_masquer + 1).Validation.ErrorMessage = "Choice " + ls_val
lxlSub.Cells(ll_ligne,i - li_nb_masquer + 1).Validation.ShowInput = True
lxlSub.Cells(ll_ligne,i - li_nb_masquer + 1).Validation.ShowError = True
Hors ligne
Hors ligne
chefours a écrit:
Salut, c'est trop tard mais pour ceux qui en auront besoin, ce code permet d'ajouter une listbox :
Par exemple une liste Yes/No :
il faut que les valeurs soient séparées par un ;
ls_val = 'Yes;No'
lxlSub.Cells(ll_ligne,i - li_nb_masquer + 1).Validation.Delete()
lxlSub.Cells(ll_ligne,i - li_nb_masquer + 1).Validation.Add(3,1,1,ls_val)
lxlSub.Cells(ll_ligne,i - li_nb_masquer + 1).Validation.IgnoreBlank = True
lxlSub.Cells(ll_ligne,i - li_nb_masquer + 1).Validation.InCellDropdown = True
lxlSub.Cells(ll_ligne,i - li_nb_masquer + 1).Validation.InputTitle = ""
lxlSub.Cells(ll_ligne,i - li_nb_masquer + 1).Validation.ErrorTitle = "Choice"
lxlSub.Cells(ll_ligne,i - li_nb_masquer + 1).Validation.InputMessage = "Choice " + ls_val
lxlSub.Cells(ll_ligne,i - li_nb_masquer + 1).Validation.ErrorMessage = "Choice " + ls_val
lxlSub.Cells(ll_ligne,i - li_nb_masquer + 1).Validation.ShowInput = True
lxlSub.Cells(ll_ligne,i - li_nb_masquer + 1).Validation.ShowError = True
de ta contribution
histoire de prendre les bonnes habitudes
Hors ligne
Merci, ça pourra toujours servir dans un autre dev
Hors ligne
Pages: 1