cbxlies concocter par dranreb pour matou59

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.
 

Fichiers joints

Dernière édition:

grisan29

XLDnaute Accro
Re : cbxlies concocter par dranreb pour matou59

le cbxLiéesgrisan29.xls est en réalité le classeur "Articles"
 

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
 

Fichiers joints

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à.
 

grisan29

XLDnaute Accro
Re : cbxlies concocter par dranreb pour matou59

bonjour
j'ai renommé le classeur que tu m'as envoyer en "Articles"

tu dits
si tu as réussi à loger tout son résultat dans l'entête de page
j'ai arrêter de m'en occuper pour l'instant j’essaie avec les articles
j'en était a ajuster les inscriptions d'adresse perso et logo pour ce qui est de l'entête mais pas au niveau client
il y a la la zone A1:G16 qui est nommée entete_feuille et la cellule E4 est nommée DOC_CLIENT (comme sur l'autre classeur)
pour l'entête il va falloir que je trouve comment faire pour la numérotation en rapport avec le nom de feuille

est ce que le fonctionnement de l'ensemble ne sera pas trop lourd avec les 3 classeurs a base de modules de classes , ne pourrait-on pas les réunir?
 

Dranreb

XLDnaute Barbatruc
Re : cbxlies concocter par dranreb pour matou59

Je suppose qu'un classeur serveur général pourrait contenir les trois bases: Articles, Clients et codes postaux.
 

grisan29

XLDnaute Accro
Re : cbxlies concocter par dranreb pour matou59

je posais la question pour avoir ton avis et je me dits que j'aurais mieux fait de ne pas poser cette question, vu ta réponse qui présage une complication de plus que l'ouverture d'userform
de retour je vais te poster le classeur v2-3 sur lequel j'ai mis l'userform de bas de pages avec un bouton pour le bordurage mais qui doit être mis en œuvre avant le bas de page sinon le bas est entouré en partie
il y a un autre souci avec ce bouton car il créer les bordures a partir ce la colA sauf que cette colonne peux ne pas etre remplie a la dernière ligne
j'ai aussi mis un système de numérotation que j'avais sur un classeur d'essai mais je ne trouve pas des plus biens le système de numérotation car pour cette formule il me faut un n° pour chaque nom de feuille

re
j'ai rajouter un bouton pour aperçu avec mon entête globale mais pas pour client ni système de numérotation
 
Dernière édition:

grisan29

XLDnaute Accro
Re : cbxlies concocter par dranreb pour matou59

bonjour dranreb

j'ai réussi a faire comme pour les aticles a faire ouvrir le classeur client via la macro mais j'ai du rusé pour que l'userform s'ouvre
Code:
Public Sub Lancer()
'MsgBox "Dispositif Clients" & Choose(État, ": Lancement effectué.", " déjà opérationnel.", " en action, là !"), _
   Choose(État, vbInformation, vbExclamation, vbCritical), Me.Caption & " - Lancer"
   MsgBox "je m'ouvre"
On Error Resume Next
If État = 1 Then Ex_SheetSelectionChange ActiveSheet, ActiveCell
Uclient.Show
End Sub
et le msg ne veux pas tel que dire ce qu'il faut sans bug, mon petit message s'ouvre:eek:

Pascal
 

Dranreb

XLDnaute Barbatruc
Re : cbxlies concocter par dranreb pour matou59

Bonjour.
Le Boolean État n'est probablement pas initialisé. Dans l'autre UF il est mis à :
1 : À la fin de l'UserForm_Initialise
2 : Par Ex_SheetSelectionChange quand la condition d'affichage n'est pas remplie
3 : Par Ex_SheetSelectionChange quand la condition d'affichage est remplie et qu'il est donc affiché. (ou plutôt l'a au moins été la dernière fois qu'on a sélectionné une cellule)
 
Démarré par Discussions similaires Forum Réponses Date
grisan29 Forum Excel 156

Discussions similaires


Haut Bas