cbxlies concocter par dranreb pour matou59

grisan29

XLDnaute Accro
bonsoir le forum et Dranreb

puis je m'approprier ce projet de cbxlies si tu m'explique comment la 1ere combobox puisse prendre ses informations sur plusieurs(8 ou 10) feuilles de la même architecture que celle que tu as fait
dans ce post
pour m'exercer a manipuler tes cbxlies et créer un classeur client a mon voisin en m'appropriant celui que tu fait pour fenec

pascal
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : cbxlies concocter par dranreb pour matou59

Bonjour.
je ne saisi pas ton raisonnement, il faudra que je cherche la macro a chaque fois que je voudrais ouvrir l'userform, mais quelle perte de temps sur ce principe
Non il suffit qu'elle soit affectée à un bouton de barre d'outils toujours présent dans les menus quel que soit le classeur actif. Ça doit bien toujours encore pouvoir se faire dans ta version d'Excel, non ?
Qu'est ce que tu appelle Ouvrir ? Emploie des mots clairs Charger ou bien Afficher, vu que les deux choses se feront à des instants différents ? Le chargement par la macro ChargerArtictes et son auto-affichage par détection de la sélection d'une plage cible appropriée. Je ne vois rien d'anormal dans le code que tu me montre : Il initialise convenablement PlgDest avant de s'auto-afficher.
Donc PlgDest ne peut rester non défini que si l'affichage a été incorrectement provoqué de l'extérieur au lieu d'avoir eu lieu tout seul.
 
Dernière édition:

grisan29

XLDnaute Accro
Re : cbxlies concocter par dranreb pour matou59

bonsoir

tu dits
qu'elle soit affectée à un bouton de barre d'outils toujours présent dans les menus quel que soit
justement hier je n'ai pas trouvé comment faire, peut etre que le méthode 2003 est valable pour 2013

Qu'est ce que tu appelle Ouvrir ?
ouvrir l'userform ben oui charger pour moi veux dire autre chose bref polémiquer sur des appellations de pro et de novice peu être de longue haleine

Donc PlgDest ne peut rester non défini que si l'affichage a été incorrectement provoqué de l'extérieur au lieu d'avoir eu lieu tout seul.
rien fait pour que cela arrive hormis créer un classeur indépendant pour les articles

Pascal
 

Dranreb

XLDnaute Barbatruc
Re : cbxlies concocter par dranreb pour matou59

Bonsoir.

En Excel 2003 on fait un clic droit sur une barre d'outis, menu contextuel Personnaliser, clic droit sur un bouton, affecter une Macro. Ce qui est affiché ensuite ressemble beaucoup à ce que tu m'a montré. On restreint la recherche à Macros dans : "Tous les classeurs ouverts" au classeur ouvert contenant la macro qu'on veut affecter, on clique dans la liste sur le nom de la macro voulue, OK. C'était simple et pratique.

Ça ne me dit toujours pas si ce que tu considère comme l'ouverture c'est le lancement du dispositif par Load de l'UserForm ou son affichage.

Peux tu joindre ton classeur Articles et un classeur de facture où PlgDest n'est plus initialisé au moment où on valide la saisie. ?
Tu peux aussi mettre un espion PlgDest.Address et dérouler en pas à pas pour voir à partir de quand il cesse d'être initialisé.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : cbxlies concocter par dranreb pour matou59

Je viens d'ouvrir le fichier Article. Presque tout y est à première vue, mais pas la procédure de lancement ChargementArticles. Alors c'est normal que tu ne puisse l'affecter à quelque chose, si elle n'existe pas.
Je vais la rajouter dans un module nommé MLancement. J'ai pensé à un dispositif qui permettrait de savoir à postériori s'il était déjà opérationnel, voire en action. Le message serait en fait émis par l'UserForm. Ça t'intéresserait ?

Ah je viens de trouver la Sub ChargementArticles dans l'autre classeur. Et avec UFmArticles.Show au lieu de Load UFmArticles en plus. Ça ne peut donc pas être sa place, voyons: UFmArticles n'y est pas connu !

Cela dit je n'ai pas eu de problème pour enregistrer une ligne dans ta facture. Faute de procédure ChargementArticles je l'ai affiché un coup, puis quitté, je suis allé dans l'autre classeur sélectionné une cellule de la colonne B, il s'est réaffiché, j'ai sélectionné un article quelconque, Envoi sur Feuille (OK suffirait), ça s'est bien inscrit dans la ligne sélectionnée. Je ne vois pas où est le problème.
Je regarde encore…
Non décidement je ne vois rien qui cloche.
 

grisan29

XLDnaute Accro
Re : cbxlies concocter par dranreb pour matou59

mais pas la procédure de lancement
normal c'est pas le classeur qui sous c: :mad:

J'ai pensé à un dispositif qui permettrait de savoir à postériori s'il était déjà opérationnel, voire en action. Le message serait en fait émis par l'UserForm. Ça t'intéresserait ?

oui bien sur que cela m’intéresse

Et avec UFmArticles.Show au lieu de Load UFmArticles en plus
oui mais les 2 solutions n'ouvrait pas l'userform
je te joints le classeur qui est sous c:
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : cbxlies concocter par dranreb pour matou59

Je le renvoie les modif effectuées à partir du premier classeur. Il est muni d'une procédure de lancement un peu différente.
S'il y a des fichiers articles sur différents supports ils doivent chacun avoir la même programmation et il faut lancer la LancementArticles de celui qu'on veut utiliser.

Oups. Je me suis complètement trompé de fichier à tout point de vue.
 

Pièces jointes

  • CbxLiéesGrisan29.xls
    383.5 KB · Affichages: 96
  • CbxLiéesGrisan29.xls
    383.5 KB · Affichages: 103
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : cbxlies concocter par dranreb pour matou59

Oui, c'est normal, c'est là que sont les articles à proposer et toute la programmation qui les propose.
À vérifier maintenant si, comme c'est le cas chez moi, une fois le dispo lancé, l'UserForm s'affiche bien automatiquement quand on sélectionne une cellule d'une plage CorpsDevFac d'un autre classeur.
 

grisan29

XLDnaute Accro
Re : cbxlies concocter par dranreb pour matou59

j'ouvre le classeur factdev et clic sur le bouton articles de l'userform afin d'ouvrir le classeur articles(nouveau) et pas d'userform en vue mais classeur ouvert
c'est le résultat avec le cbx..v2-3 joint au post #124
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : cbxlies concocter par dranreb pour matou59

Tu pourrais pas foutre en l'air cet Userform liste_boutons à la con ???

Ou alors juste mettre pour le bouton Articles :
VB:
Application.Run "'C:\Documents and Settings\luck\Mes documents\XLD\CbxLiéesGrisan29.xls'!LancementArticles"
Chemin et noms de classeur à adapter bien évidemment.
 
Dernière édition:

grisan29

XLDnaute Accro
Re : cbxlies concocter par dranreb pour matou59

pardon dranreb je me suis mal pris au départ je revenais pour le dire
l'userform s'ouvre a chaque clic dans la zone concerné par le corpsdevfact soit dans n'importe quelle cellule
que ce soit sur une ligne écrite ou pas , pourrai t'il s'ouvrir après la dernière ligne écrite

de toute façon cette liste_boutons va etre remis en forme avec des rajouts
 

Dranreb

XLDnaute Barbatruc
Re : cbxlies concocter par dranreb pour matou59

À défaut de pouvoir affecter la macro à quelque chose de toujours affiché dans les menus on peut en attendant l'exécuter par un Run.
J'ai fait l'essai, ça marche, que le classeur Articles soit déjà ouvert ou non. Ne pas oublier les apostrophes. Voir poste précédent.
Il s'affiche pour la ligne dont on sélectionne une cellule. On pourrait à la rigueur faire en sorte qu'il s'affiche aussi pour la ligne qui suit immédiatement la plage CorpsDevFac et agrandisse alors automatiquement celle ci d'une ligne. Mais c'est pour l'instant déjà assez compliqué comme ça. On pourrait aussi prévoir qu'au lieu de se masquer après une saisie il reparte automatiquement sur la cellule en dessous. Par ailleurs une sélection effectuée par un code quelque part aurait le même effet qu'une sélection manuelle. Mais je crois qu'il vaut vraiment mieux que de son coté l'UserForm continue de se contenter de retoucher la ligne qu'on lui montre en sélectionnant la cellule. Ça permet la modification d'une ligne existante.
 
Dernière édition:

grisan29

XLDnaute Accro
Re : cbxlies concocter par dranreb pour matou59

bonjour

merci de ta réponse, j'ai mis le run en début de code et j'ai un bug erreur 1004 la méthode run a échouée

Code:
Private Sub CmDbibli_Click()
Application.Run "'C:\Facturation-v1s\base\Articles.xls'!LancementArticles"
Unload Me

Dim Clas As Workbook, NomClass As String, Feuil As Worksheet
If WB_BASE_ARTICLES = "" Then MsgBox "Variable Public WB_BASE_ARTICLES As String non initialisée.", vbCritical, Me.Caption: Exit Sub
If WS_ARTICLES = "" Then MsgBox "Variable Public WS_ARTICLES As String non initialisée.", vbCritical, Me.Caption: Exit Sub
'If IsEmpty(RG_DÉBUT_BASE_ARTICLES) Then MsgBox "Variable Public RG_DÉBUT_BASE_ARTICLES non définie As Range.", vbCritical, Me.Caption: Exit Sub
'ElseIf UCase(Clas.FullName) <> UCase(WB_BASE_ARTICLES) Then MsgBox "Un classeur """ & Clas.Name & """ est déjà ouvert mais vient de" '_ etc.
On Error Resume Next
NomClass = Mid$(WB_BASE_ARTICLES, InStrRev(WB_BASE_ARTICLES, "\") + 1)
Set Clas = Workbooks(NomClass)
If Err Then
   Err.Clear: Set Clas = Workbooks.Open(WB_BASE_ARTICLES)
   
   If Err Then MsgBox "Il n'existe pas de classeur """ & WB_BASE_ARTICLES & """.", vbCritical, Me.Caption: Exit Sub
   ElseIf UCase(Clas.FullName) <> UCase(WB_BASE_ARTICLES) Then MsgBox "Un classeur """ & Clas.Name & """ est déjà ouvert mais vient de" '_
   ElseIf Clas.FullName <> WB_BASE_ARTICLES Then MsgBox "Un classeur """ & Clas.Name & """ est déjà ouvert mais vient de" _
   & vbLf & Clas.FullName & " et non de" & vbLf & WB_BASE_ARTICLES, vbCritical, Me.Caption: Exit Sub
   End If
Set Feuil = Clas.Worksheets(WS_ARTICLES)
If Err Then MsgBox "Le classeur """ & Clas.Name & """ ne contient pas de feuille """ & WS_ARTICLES & """.", _
   vbCritical, Me.Caption: Exit Sub
'Set RG_DÉBUT_BASE_ARTICLES = Sheets("Articles").[A2]

'Load bibliothèques

End Sub

tu dits
Il s'affiche pour la ligne dont on sélectionne une cellule.
oui ce n'est pas le reproche mais pourrait-il ne s'afficher que si le clic est fait en colonne B, je ne vois pas ou cela est dans le code
l'UserForm continue de se contenter de retoucher la ligne qu'on lui montre en sélectionnant la cellule. Ça permet la modification d'une ligne existante.
comment cela en réinscrivant les données dans les textbox et combobox?
autrement l'userform client est a gérer sur le modèle de celui des articles où différement
 

Pièces jointes

  • bug.jpg
    bug.jpg
    53.4 KB · Affichages: 88
  • bug.jpg
    bug.jpg
    53.4 KB · Affichages: 81
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : cbxlies concocter par dranreb pour matou59

Bonjour.

En fait pour ne pas risquer de me tromper dans la syntaxe du Run j'ai affecté la macro à une forme dessinée, j'ai fermé le classeur CbxLiéesGrisan29.xls contenant cette macro puis je me suis arrangé pour récupérer la propriété OnAction de la forme. (le chemin disparaît de la propriété OnAction quand il est ouvert).

Ben oui, je croyais aussi qu'on voulait se limiter à la colonne B, je ne sais pas comment elle s'est retrouvée en commentaire l'instruction If Target.Column <> 2 Then Exit Sub. C'est d'ailleurs pour ça que je l'ai laissée au lieu de la supprimer car je pensais qu'elle ne devrait pas être en commentaire.

Oui en récrivant des choses dans les contrôles. J'ai d'ailleurs fait au moins le plus gros à peu près je pense.

L'Userform UFmClients pourrait bénéficier d'un dispositif analogue sauf que si tu as réussi à loger tout son résultat dans l'entête de page il faudrait un signal différent pour provoquer son affichage. Par exemple: sélection de la cellule A1 d'une feuille qui contient une plage nommée CorpsDevFac bien qu'on ne s'y intéresse pas là.
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof