Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/01/2012, 16h17   #1
Invité de passage
 
Inscription : janvier 2012
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 14
Points : 2
Points : 2
Par défaut Listbox et inputbox

bonjour,

J'ai une input box pour choisir entre trois méthodes, je voudrais la remplacer par une liste de ces méthodes, par exemple une listbox, comment faire ?

voici mon code
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
'Choix de la méthode
 
j = InputBox("Tapez 1 pour remplacer par 0, 2 pour remplacer par la valeur précédente, et 3 pour interpoler", "Méthode de remplacement", 1)
 
Select Case j
 
    Case 1
    vRempZ = fnZero(vY2PE)
    Sheets("FED MODEL").Range(Cells(2, 5), Cells(UBound(vRempZ), 5)).Value = Application.Transpose(vRempZ)
 
    Case 2
    vRempP = fnPrevious(vY2PE)
    Sheets("FED MODEL").Range(Cells(2, 5), Cells(UBound(vRempP), 5)).Value = Application.Transpose(vRempP)
 
    Case Else
    vRempI = fnInter(vY2PE)
    Sheets("FED MODEL").Range(Cells(2, 5), Cells(UBound(vRempI), 5)).Value = Application.Transpose(vRempI)
 
End Select
Merci d'avance
karimus00 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 16h35   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

Pour une ListBox sur feuille, mans le module "ThisWorkbook", mets :

Code :
1
2
3
4
5
6
7
Private Sub Workbook_Open()
With Sheets("Feuil1").ListBox1
    .AddItem "Tapez 1 pour remplacer par 0"
    .AddItem "Tapez 2 pour remplacer par la valeur précédente"
    .AddItem "et 3 pour interpoler"
End With
End Sub
Dans le module de la feuille, mets :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub ListBox1_Change()
    Select Case Me.ListBox1.ListIndex + 1
 
        Case 1
        vRempZ = fnZero(vY2PE)
        Sheets("FED MODEL").Range(Cells(2, 5), Cells(UBound(vRempZ), 5)).Value = Application.Transpose(vRempZ)
        Case 2
        vRempP = fnPrevious(vY2PE)
        Sheets("FED MODEL").Range(Cells(2, 5), Cells(UBound(vRempP), 5)).Value = Application.Transpose(vRempP)
        Case Else
        vRempI = fnInter(vY2PE)
        Sheets("FED MODEL").Range(Cells(2, 5), Cells(UBound(vRempI), 5)).Value = Application.Transpose(vRempI)
 
    End Select
End Sub
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 10h52   #3
Invité de passage
 
Inscription : janvier 2012
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 14
Points : 2
Points : 2
Bonjour,

j'ai une erreur à l’exécution, "utilisation incorrecte du mot clé Me"
karimus00 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 10h57   #4
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Surprenant. Où as-tu mis ta listbox ? sur une feuille ou sur un userform ?
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 11h05   #5
Invité de passage
 
Inscription : janvier 2012
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 14
Points : 2
Points : 2
dans un module. c'est bien ça qu'il fallait faire ?
karimus00 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 11h57   #6
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Non, je ne parle pas du code (il est toujours dans un module) mais de la listbox, où est-elle ? Ta réponse me fait toutefois penser que la macro n'est pas dans le module de la feuille mais dans module standard. Fais un clic droit sur l'onglet de la feuille contenant la listbox, clique sur "Visualiser le code" et colle la macro dans la fenêtre qui s'ouvre.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 12h25   #7
Invité de passage
 
Inscription : janvier 2012
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 14
Points : 2
Points : 2
Je suis désolé mais je ne comprends pas.

Voila mon code, je suis novice en vba.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Public Sub remp()
 
Debug.Print "Début du code à " & VBA.Time & vbCrLf
 
'feuille sur laquelle on travaille
Set wsM = ThisWorkbook.Worksheets("FED MODEL")
 
'plage avec la valeur de Y2PE
Set rgY2PE = wsM.Range("D2")
 
'avoir la taille des tableaux
DerniereLigne = Range("D1").End(xlDown).Row
 
'création du vecteur de date nettoyé
 
'Remplacement des valeurs manquantes de Y2 PE RATIO par 0
'On met le tableau Y2 PE dans le tableau vY2PE
 
    i = 0
    ReDim vY2PE(i)
 
        For i = 0 To DerniereLigne
            ReDim Preserve vY2PE(i) 'preserv: sert à redimensionner le vecteur et à garder les valeurs qui étaient dedans
            vY2PE(i) = rgY2PE(i + 1)
        Next i
 
 
'choix de la méthode de remplacement
 
'Choix de la méthode
 
j = InputBox("Tapez 1 pour remplacer par 0, 2 pour remplacer par la valeur précédente, et 3 pour interpoler", "Méthode de remplacement", 1)
 
Select Case j
 
    Case 1
    vRempZ = fnZero(vY2PE)
    Sheets("FED MODEL").Range(Cells(2, 5), Cells(UBound(vRempZ), 5)).Value = Application.Transpose(vRempZ)
 
    Case 2
    vRempP = fnPrevious(vY2PE)
    Sheets("FED MODEL").Range(Cells(2, 5), Cells(UBound(vRempP), 5)).Value = Application.Transpose(vRempP)
 
    Case Else
    vRempI = fnInter(vY2PE)
    Sheets("FED MODEL").Range(Cells(2, 5), Cells(UBound(vRempI), 5)).Value = Application.Transpose(vRempI)
 
End Select
 
End Sub
et c'est que je voudrais c'est savoir si y a un moyen de remplacer la inmput box par une liste ou je peux directement choisir ma méthode, j'ai pensé à une listbox. C'est juste ?
karimus00 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 12h57   #8
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Regarde le classeur joint. Il faut que tu ajoutes tes feuilles. Ne change pas le nom "Feuil1" de la feuille contenant la listbox. Si tu le fais, tu dois modifier le code également.
Fichiers attachés
Type de fichier : xls karimus00.xls (39,5 Ko, 3 affichages)
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 13h21   #9
Invité de passage
 
Inscription : janvier 2012
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 14
Points : 2
Points : 2
Merci je vais voir ca tout de suite.

Merci encore
karimus00 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h10.


 
 
 
 
Partenaires

Hébergement Web