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:

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?
 

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)
 

grisan29

XLDnaute Accro
Re : cbxlies concocter par dranreb pour matou59

bonjour

je vais joindre le classeur client pour que tu voie ce que j'ai fait, le code du bouton d'appel n'a pas changer
Code:
Private Sub CommandButton2_Click()
Unload Me
Dim Clas As Workbook, NomClass As String, Feuil As Worksheet
If WB_BASE_CLIENTS = "" Then MsgBox "Variable Public WB_BASE_CLIENTS As String non initialisée.", vbCritical, Me.Caption: Exit Sub
If WS_CLIENTS = "" Then MsgBox "Variable Public WS_CLIENTS As String non initialisée.", vbCritical, Me.Caption: Exit Sub
'If IsEmpty(RG_DÉBUT_BASE_CLIENT) Then MsgBox "Variable Public RG_DÉBUT_BASE_CLIENT non définie As Range.", vbCritical, Me.Caption: Exit Sub
'ElseIf UCase(Clas.FullName) <> UCase(WB_BASE_CLIENTS) Then MsgBox "Un classeur """ & Clas.Name & """ est déjà ouvert mais vient de" '_ etc.
On Error Resume Next
NomClass = Mid$(WB_BASE_CLIENTS, InStrRev(WB_BASE_CLIENTS, "\") + 1)
Set Clas = Workbooks(NomClass)
If Err Then
   Err.Clear: Set Clas = Workbooks.Open(WB_BASE_CLIENTS)
   If Err Then MsgBox "Il n'existe pas de classeur """ & WB_BASE_CLIENTS & """.", vbCritical, Me.Caption: Exit Sub
   ElseIf UCase(Clas.FullName) <> UCase(WB_BASE_CLIENTS) Then MsgBox "Un classeur """ & Clas.Name & """ est déjà ouvert mais vient de" '_
   'ElseIf Clas.FullName <> WB_BASE_CLIENTS Then MsgBox "Un classeur """ & Clas.Name & """ est déjà ouvert mais vient de" _
   & vbLf & Clas.FullName & " et non de" & vbLf & WB_BASE_CLIENTS, vbCritical, Me.Caption: Exit Sub
   End If
Set Feuil = Clas.Worksheets(WS_CLIENTS)
If Err Then MsgBox "Le classeur """ & Clas.Name & """ ne contient pas de feuille """ & WS_CLIENTS & """.", _
   vbCritical, Me.Caption: Exit Sub
'Set RG_DÉBUT_BASE_CLIENT = Feuil.[A2]
'Unload Me
'Uclient.Show

End Sub

Pascal
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : cbxlies concocter par dranreb pour matou59

Je confirme que dans UserForm_Initialize il faut mettre État = 1 derrière la CL.Actualiser et probablement supprimer tout le reste puisque on est dans un fichier Clients qui est ouvert et que c'est celui là qu'il faut utiliser.

Attention PlgDest n'est pas déclaré. Ni utilisé d'ailleurs. Ça m'a l'air d'être un UF de mise à jour des clients seulement, il ne semble pas comporter de dispositif permettant d'en inscrire un dans une facture.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : cbxlies concocter par dranreb pour matou59

Je n'avais pas vu.
Alors veiller à ce que PlgDest soit initialisé de façon à pouvoir faire PlgDest.Value = VCol
Ça doit toujours être toute la F.[DOC_CLIENT] quelle que soit la cellule qu'on en a sélectionné.
Et la déclarer en tête bien sûr !
 
Dernière édition:

grisan29

XLDnaute Accro
Re : cbxlies concocter par dranreb pour matou59

plgdest est déclarer en tête du code de l'userform
Code:
Option Explicit
Dim WithEvents CLCPVil As ComboBoxLiées
Dim WithEvents CL As ComboBoxLiées
Dim LCou As Long, VLgn() As Variant, ExécutionIntempestive As Boolean
Dim État As Byte
Dim ValsLgn(), PlgDest As Range

tu dit toute la F.[DOC_CLIENT] mais DOC_CLIENT n'est que le nom d'une cellule
voici ce que j'ai dit dans le post #136
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)

Pascal
 

Dranreb

XLDnaute Barbatruc
Re : cbxlies concocter par dranreb pour matou59

mais DOC_CLIENT n'est que le nom d'une cellule
Ce n'était pas suggéré par l'instruction Set PlgDest = Intersect(F.[DOC_CLIENT], Target.EntireRow) qui cherchait donc une intersection pour rien.
D'après ce que tu dis, pourquoi ne pas prendre Set PlgDest = F.[entete_feuille] ?
 

grisan29

XLDnaute Accro
Re : cbxlies concocter par dranreb pour matou59

bonjour dranreb

je ne vois pas où il y a 2 noms identiques dans le code du bouton
Code:
Private Sub BtnValider_Click()
If BtnValider.Caption = "Devis" Then
   Dim VCol(1 To 6, 1 To 1)
   VCol(1, 1) = VLgn(1, 3) & " " & VLgn(1, 4)
   VCol(2, 1) = VLgn(1, 5)
   VCol(3, 1) = "À l'attention de :  " & VLgn(1, 6)
   VCol(4, 1) = VLgn(1, 7)
   VCol(5, 1) = VLgn(1, 8)
   VCol(6, 1) = VLgn(1, 9) & " " & VLgn(1, 10)
   
   'With Workbooks("CbxLiésgrisan9-v2-3.xls").Sheets("FactDev")
   
  Sheets("feuil1").[E4:E9].Value = VCol
   'End With
Else
   If LCou = 0 Then
      LCou = CL.PlgTablo.Rows.Count
      With CL.PlgTablo.Rows(LCou): .Copy: .Insert: End With
      LCou = LCou + 1: End If
   VLgn(1, 3) = Me.TBattention.Text
   VLgn(1, 4) = Me.TBadresse.Text
   VLgn(1, 5) = Me.TBcomplement.Text
   VLgn(1, 6) = Me.CBcp.Text
   VLgn(1, 7) = Me.CBville.Text
   VLgn(1, 8) = Me.TBtele.Text
   VLgn(1, 9) = Me.TBport.Text
   VLgn(1, 10) = Me.TBfax.Text
   VLgn(1, 11) = Me.TBmail.Text
   CL.PlgTablo.Rows(LCou).Resize(, 12).Value = VLgn
   CL.Actualiser
   HabiliterBoutons
   End If
End Sub
et de plus sur le cbxliées-client de départ les n°tel et mail ne s'écrivait pas sur la feuille et ici il font

Pascal
 

Dranreb

XLDnaute Barbatruc
Re : cbxlies concocter par dranreb pour matou59

Je parlais des deux noms de plages différents: DOC_CLIENT et entete_feuille.
Aucun des deux n'est définie de façon à pouvoir être simplement pris en tant que PlgDest, pour pouvoir faire PlgDest.Value = VCol dans la BtnValider_Click, pour que ça s'adapte à toute feuille portant ce nom de plage dans n'importe quel classeur.
 

Discussions similaires