listerla
XLDnaute Nouveau
Bonjour,
Je suis actuellement confronté a un problème sur vba/excel : je n'arrive pas a récuperer la valeur du caption ou le nom d'une page spécifique d'une multipage, pour ensuite utiliser cette valeur dans une boucle conditions.
Voici le description de mon programme :
Lorsque que je lance mon userform, j'ai un choix multiples à faire dans un listbox situé dans la page 1(=index 0). comprenant plusieurs nom différents.
Lorsque que j'ai fait mes x selections, je les valide via un bouton. Ceci me creer x autres pages (avec le caption et nom définis) dans la même multipages via ce code la:
For i = 1 To ListBox1.ListCount
nom = Sheets("Feuil1").Range("B" & i + 1)
If ListBox1.Selected(i - 1) = True Then
j = j + 1
Set m = Me.MultiPage1.Pages.Add
With m
.Name = nom
.Caption = nom
.Index = j
End With
End if
Next
Ce que je veux faire c'est que : si on oublie de selectionner un nom dans la page 1 (et donc indice 0), lorsque je re clic sur le bouton (en ayant sélectionner le nom manquant), SEUL la page (du nouveau nom) se creer. Ceci afin de ne pas avoir de pages doublon.
Au départ j'ai mis le code ci-dessous en début de programme (donc avant le code de creation des pages ) :
If MultiPage1.Pages.Count > 1 Then
iPage_max = MultiPage1.Pages.Count
'For iPage = 1 To iPage_max-1
'Me.MultiPage1.Pages.Remove (1)
'Next
Else
End If
Dans l'idée cela marche car il me supprime toutes les pages d'indice supérieur à 0 avant d'effectuer le code qui me (re)créer les pages suivant ma nouvelle selection.
SAUF que dans chaque page créer, on demande d'effectuer un nouvelle selection via une listbox. (on a donc une listbox sur chaque pages). Et lorsqu'on efface les pages, si on a eu le malheur de commencer nos nouvelles selections (sur les pages créées) et bien on devra donc tout recommencer.
Du coup je voudrais faire un truc du type :
Pour chaque pages de mon multipage, si le nom de la page (ou le caption) est différentes du nom (ou caption) de ma nouvelle page qui sera creer, alors on créer la nouvelle page. Sinon on ne la créer pas.
Dans l'idée ca donne ceci :
Dim z as string
For ipage = 0 To .Pages.Count - 1
z= Me.MultiPage1.Pages(ipage).Caption
If z <> nom Then
Set m = Me.MultiPage1.Pages.Add
With m
.Name = nom
.Caption = nom
.Index = j
End With
Else
Next
Seulement la ligne z= Me.MultiPage1.Pages(ipage).Caption bug.
et je vois vraiment pas (et étant absolument débutant dans le VBA/userform) ca m'aide encore moins.
Du coup je m'en remet a vous.
après de la même manière j'aimerais que si on déselectionne un nom et qu'on reclick sur le bouton, seul la page liée au nom soit supprimer. Mais ceci étant le modèle inverse à mon problème ca ca ne devrai pas me poser trop de soucis une fois mon problèeme résolu.
En vous remerciant par avance
Je suis actuellement confronté a un problème sur vba/excel : je n'arrive pas a récuperer la valeur du caption ou le nom d'une page spécifique d'une multipage, pour ensuite utiliser cette valeur dans une boucle conditions.
Voici le description de mon programme :
Lorsque que je lance mon userform, j'ai un choix multiples à faire dans un listbox situé dans la page 1(=index 0). comprenant plusieurs nom différents.
Lorsque que j'ai fait mes x selections, je les valide via un bouton. Ceci me creer x autres pages (avec le caption et nom définis) dans la même multipages via ce code la:
For i = 1 To ListBox1.ListCount
nom = Sheets("Feuil1").Range("B" & i + 1)
If ListBox1.Selected(i - 1) = True Then
j = j + 1
Set m = Me.MultiPage1.Pages.Add
With m
.Name = nom
.Caption = nom
.Index = j
End With
End if
Next
Ce que je veux faire c'est que : si on oublie de selectionner un nom dans la page 1 (et donc indice 0), lorsque je re clic sur le bouton (en ayant sélectionner le nom manquant), SEUL la page (du nouveau nom) se creer. Ceci afin de ne pas avoir de pages doublon.
Au départ j'ai mis le code ci-dessous en début de programme (donc avant le code de creation des pages ) :
If MultiPage1.Pages.Count > 1 Then
iPage_max = MultiPage1.Pages.Count
'For iPage = 1 To iPage_max-1
'Me.MultiPage1.Pages.Remove (1)
'Next
Else
End If
Dans l'idée cela marche car il me supprime toutes les pages d'indice supérieur à 0 avant d'effectuer le code qui me (re)créer les pages suivant ma nouvelle selection.
SAUF que dans chaque page créer, on demande d'effectuer un nouvelle selection via une listbox. (on a donc une listbox sur chaque pages). Et lorsqu'on efface les pages, si on a eu le malheur de commencer nos nouvelles selections (sur les pages créées) et bien on devra donc tout recommencer.
Du coup je voudrais faire un truc du type :
Pour chaque pages de mon multipage, si le nom de la page (ou le caption) est différentes du nom (ou caption) de ma nouvelle page qui sera creer, alors on créer la nouvelle page. Sinon on ne la créer pas.
Dans l'idée ca donne ceci :
Dim z as string
For ipage = 0 To .Pages.Count - 1
z= Me.MultiPage1.Pages(ipage).Caption
If z <> nom Then
Set m = Me.MultiPage1.Pages.Add
With m
.Name = nom
.Caption = nom
.Index = j
End With
Else
Next
Seulement la ligne z= Me.MultiPage1.Pages(ipage).Caption bug.
et je vois vraiment pas (et étant absolument débutant dans le VBA/userform) ca m'aide encore moins.
Du coup je m'en remet a vous.
après de la même manière j'aimerais que si on déselectionne un nom et qu'on reclick sur le bouton, seul la page liée au nom soit supprimer. Mais ceci étant le modèle inverse à mon problème ca ca ne devrai pas me poser trop de soucis une fois mon problèeme résolu.
En vous remerciant par avance