MultiPage & Controls dynamiques fonctionnent à moitié

xhudi69

XLDnaute Accro
Bonjour le Forum,

Avec l'UserForm dans le champ "Nb de Palettes" mettre le nombre de palettes à expédier puis le MultiPage s'affiche.
Cliquer sur "Ajout d'un Colis" un ListBox et deux TextBox s'affichent et cela sur les pages que l'on choisis.
Mettre dans le champ "Référence Produit" la Réf. Produit et dans le champ "Qté" le nombre de produit puis valider par "Entré"
Le problème est que cela ne fonctionne que sur la dernière page où l'on a ajouté un colis.
N'étant pas familiarisé avec les Objets dynamiques, pouvez-vous m'aider à résoudre ce problème.

merci pour votre aide.

@+ :cool:
 

Pièces jointes

  • Expédition_Test.xlsm
    231.8 KB · Affichages: 52

Bebere

XLDnaute Barbatruc
Re : MultiPage & Controls dynamiques fonctionnent à moitié

bonjour Xhudi
c'est pas du tout çà,il te faut un code bien plus simple
pour les entrées un simple userform suffit

ou doivent aller le données
si tu as des listes établies met les dans une feuille(exemple liste des clients)

rmq:le code qui est dans la feuille acceuil n'est pas à sa place
 

xhudi69

XLDnaute Accro
Re : MultiPage & Controls dynamiques fonctionnent à moitié

bonjour Bebere, le Forum,

C'est plus complexe que cela, nous sommes en logistique et la composition des palettes se fait au fur et à mesure.
On connait le nombre de palettes au départ, mais pas le nombre de colis ou produits isolés qui constitueront les palettes.
La saisie doit se faire en dynamique et l'opérateur doit avoir ces compositions à l'écran. Une fois terminer on ventile les données et on édite les étiquettes. Le but étant aussi de pouvoir sortir une arborescence Palette => Colis => Produits pour la traçabilité.

J'entends bien que l'on peut faire autrement (ça je sais faire), mais c'est plus statique et on ne peut pas avoir le plan de chargement dans son ensemble.

merci pour ton aide.

@+ :cool:
 

Bebere

XLDnaute Barbatruc
Re : MultiPage & Controls dynamiques fonctionnent à moitié

Xhudi
pour essai,fait des changements dans ce code,partie début nouveau,fin nouveau

Private Sub TextBox5_Exit(ByVal Cancel As MSForms.ReturnBoolean) '*****Nombre de palettes*****
'.........suivant le chiffre saisis on fabrique un MultiPage dont le nombre de pages correspond au nombre de palette....

If TextBox5.Value = "" Then Exit Sub '...........................................Si vide on quitte la procédure.....

Dim i As Integer, NbPal As Double, j As Integer '................Déclaration des variables.....
Dim Fond As Control, Imag As Control '.......Déclaration des variables.....
'Pal = MultiPage.....
'NbPal = nombre de palettes donc nombre de page du MultiPage.....
'Fond = Label de couleur de fond des pages.....
'Imag image palette.....
'--------------------------Création du MultiPage-------------------------------------------------------------------------------------------------
Set Pal = Me.Controls.Add("Forms.MultiPage.1", "Multi1", False) '.........................On ajoute un MultiPage.....
'*** début nouveau
' Pal.Pages.Add
NbPal = TextBox5.Value '...................................................Nombre de palettes.....
If Pal.Pages.Count > NbPal Then
For i = Pal.Pages.Count To 1 Step -1
If i > NbPal Then Pal.Pages.Remove (i - 1) Else Exit For
Next i
Else
diff = NbPal - Pal.Pages.Count
For i = 1 To diff
nom = "Palette" & NbPal + i
Set m = Pal.Pages.Add(Pal.Pages.Count + 1, nom, 1)
Next i
'Set m = MultiPage1.Pages.Add("Page5", "NewPage", 1)
End If
'*** fin nouveau
With Pal '.......................................................................Prise en compte du MultiPage.....
.Top = 210 '.........................Position Top.....
.Left = 5 '..........................Position Left....
.Width = 630 '.......................Largeur.....
.Height = 208 '......................Hauteur.....
' For i = 1 To NbPal ' - 2 '.............Boucle sur le nombre de palettes.....
'' If NbPal = 0 Then Exit For '.....Si Nb = 0 (2 palettes seulement) on sort de la boucle.....
' If i > 0 Then .Pages.Add '.....................On ajoute une page
' Next i
End With '.......................................................................Fin de prise en compte.....

For i = 0 To NbPal - 1 '.........................................................Boucle sur les pages.....
Pal.Pages(i).Caption = "Palette " & i + 1 '..................................Nom de la page.....
'--------------------------Ajout d'un Label de fond en couleur-----------------------------------------------------------------------------------
Set Fond = Pal.Pages(i).Controls.Add("Forms.Label.1", , True) '..............On ajoute un Control Label.....
With Fond
.Width = 630
.Height = 208
.BackColor = RGB(120, 120, 120)
.ZOrder (1)
End With
'--------------------------Ajout d'une image palette sur les pages--------------------------------------------------------------------------------
Set Imag = Pal.Pages(i).Controls.Add("Forms.Image.1", , True) '..............On ajoute un Control image.....
Set Img = Sheets("Temp1").Shapes("Palette_eur")
Img.CopyPicture xlBitmap 'xlScreen, xlPicture
With Imag
.Width = 83
.Height = 48
.BorderStyle = 0
.BackStyle = 0
.PictureSizeMode = 1
.Top = 136
.Left = 537
End With
Set Imag.Picture = PastePicture()
'--------------------------Ajout d'un Label palette sur les pages--------------------------------------------------------------------------------
Set Fond = Pal.Pages(i).Controls.Add("Forms.Label.1", , True) '..............On ajoute un Control Label.....
With Fond
.Width = 83
.Height = 18
.BackStyle = 0
.ForeColor = RGB(255, 255, 255)
.TextAlign = 2
.Font.Name = "calibri"
'.Font.Bold = True
.Font.Size = 12
.Caption = "Palette n° " & i + 1
.Left = 537
.Top = 116
End With
Next i '.........................................................................Page suivante.....
Pal.Visible = True '.............................................................On rend visible le Multipage.....
Frame1.Visible = True '..........................................................On rend visible le Frame Composition.....
StatutPage.Value = Pal.SelectedItem.Index '......................................Mémorise la page où on est.....
End Sub
 
Dernière édition:

Tentative

XLDnaute Occasionnel
Re : MultiPage & Controls dynamiques fonctionnent à moitié

Bonjour,

Ce problème m'a terriblement intrigué et j'ai pioché bien des heures, car mon niveau vba est passablement limité.
M'enfin ...

J'ai présumé que problème provenait des noms des objets qui sont tous les mêmes d'une page à l'autre.
En créant autant d'objets que de pages, ça fonctionne.
Pour l'instant, le code est limité à 4 pages, du code répété, car je ne sais pas comment ajouter une variable à la fin du nom des objets; ce n'est pas faute d'avoir essayé.

Sinon, ça obligerait à répéter le code autant de fois qu'il sera susceptible d'avoir de palettes.

Reste à trouver comment ajouter une variable aux noms des objets pour simplifier le code.

Mon ti-bout est fait ...

A+


Tentative
 

Pièces jointes

  • Expédition_Test(1).xlsm
    212.5 KB · Affichages: 33

xhudi69

XLDnaute Accro
Re : MultiPage & Controls dynamiques fonctionnent à moitié

Bonjour Tentative, le Forum,

Cela fonctionne bien sûr mais imagine que la logistique à souvent 10 à 15 palettes pour un même client :p:p
Merci en tout cas pour ta réflexion et ton travail, moi je creuse encore..........

@Bebere: ton code fonctionne mais n’apporte pas la solution de l'événement Click de QuantColis qui doit ventiler les données dans le ListBox, c'est toujours la dernière page qui reçois l'Ajout de Colis qui prime.

Je continue à chercher......@+ :cool:
 

Bebere

XLDnaute Barbatruc
Re : MultiPage & Controls dynamiques fonctionnent à moitié

Xhudi

es tu obligé de créer le muiltipage par code

je pense qu'en passant par évènement change du multipage
initialiser une variable ipage quand clic onglet ton problème est résolu
Dim iPage As Byte déclaré en tête de feuille

dans label15_clic,écrire les lignes comme suit
Set ListColis = Pal.Pages(iPage).Controls.Add("Forms.ListBox.1", "ListColis", True)
Set TextColis = Pal.Pages(iPage).Controls.Add("Forms.TextBox.1", "TextColis", True)
Set QuantColis = Pal.Pages(iPage).Controls.Add("Forms.TextBox.1", "QuantColis", True)
Set Commentaire = Pal.Pages(iPage).Controls.Add("Forms.Label.1", "Commentaire", True)
 

Tentative

XLDnaute Occasionnel
Re : MultiPage & Controls dynamiques fonctionnent à moitié

Bonjour,

Je me suis permis de tester.
Avec cette modification au code, on ne peut créer des champs seulement que sur une page (n'importe laquelle).
En tentant de créer des champs dans une autre page, ça efface aussi le contenu de ListColis déjà créé.


Tentative
 

Tentative

XLDnaute Occasionnel
Re : MultiPage & Controls dynamiques fonctionnent à moitié

Bonjour,

Voici une version qui fonctionne ... en ne modifiant que légèrement Label15_click et Quant_click

En gros j'ai modifié la taille de ListColis et mis les textes box (TextColis et QuantColis) en dehors pour n'avoir que ces deux-là pour toutes les pages.

L'image de la palette n'a pas encore été déplacée dans le même principe, i.e. une image pour toutes les pages en ne changeant que le Label en changeant de pages.
Ou encore garder l'image dans le ListColis (on devra agrandir ListColis) mais il faut conserver (TextColis et QuantColis) en dehors du ListColis.

Il y a sûrement des Labels à replacer je n'ai pas fait attention à ces cosmétiques.

Espérant que ceci puisse aider dans ton projet.


Tentative
 

Pièces jointes

  • Expédition_Test(3).xlsm
    203.9 KB · Affichages: 23
  • Expédition_Test(3).xlsm
    203.9 KB · Affichages: 38
  • Expédition_Test(3).xlsm
    203.9 KB · Affichages: 37

xhudi69

XLDnaute Accro
Re : MultiPage & Controls dynamiques fonctionnent à moitié

Bonjour tentative :) , le Forum,

Merci pour ton retour et ton travail, je suis encore au bureau, je vois ça ce soir, de prime abord cela fonctionne, je remanie cela et reviens ASAP.

@+ :cool:
 

xhudi69

XLDnaute Accro
Re : MultiPage & Controls dynamiques fonctionnent à moitié

Bonjour Bebere :) , Tentative :) , le Forum,

@Tentative: merci à toi car tu as fait la moitié du chemin, je ferais l'autre moité, je modifie mon code et poste le fichier ASAP.

@+ :cool:
 
Dernière édition:

Bebere

XLDnaute Barbatruc
Re : MultiPage & Controls dynamiques fonctionnent à moitié

bonsoir Xhudi,Tentative
en reprenant le code de Tentative
ajouté du code pour le transfert des données
modifier QuantColis_KeyDown et ajout de sub transfert
 

Pièces jointes

  • Expédition_Test(3).xlsm
    202.1 KB · Affichages: 20
  • Expédition_Test(3).xlsm
    202.1 KB · Affichages: 44
  • Expédition_Test(3).xlsm
    202.1 KB · Affichages: 40

Statistiques des forums

Discussions
311 723
Messages
2 081 934
Membres
101 844
dernier inscrit
pktla