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 02/01/2012, 21h13   #1
Membre habitué
 
pascal
artisan poseur
Inscription : octobre 2006
Messages : 342
Détails du profil
Informations personnelles :
Nom : pascal

Informations professionnelles :
Activité : artisan poseur
Secteur : Bâtiment

Informations forums :
Inscription : octobre 2006
Messages : 342
Points : 137
Points : 137
Par défaut changement du nombre de feuilles qui bug

bonjour a vous
Bonne année et santé a tous acteurs et forumeurs pour 2012
le code ci dessous fonctionne bien avec 8 feuilles mais dans le but d'alléger le nombre de feuilles j'ai tout inscrit dans une seule mais il me reste un morceau sur lequel je bute et que je vous soumets
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
Private Sub lstDescription_Change() 'listbox description
 
    If Me.OptionButton4.Value = "Vrai" Then Set Sh = Sheets("liste des articles") 'prestation
    If Me.OptionButton5.Value = "Vrai" Then Set Sh = Sheets("liste des articles") 'plomberie
    If Me.OptionButton6.Value = "Vrai" Then Set Sh = Sheets("liste des articles") 'électricité
    If Me.OptionButton7.Value = "Vrai" Then Set Sh = Sheets("liste des articles") 'carrelage
    If Me.OptionButton8.Value = "Vrai" Then Set Sh = Sheets("liste des articles") 'SDB
    If Me.OptionButton9.Value = "Vrai" Then Set Sh = Sheets("liste des articles") 'parquet
    If Me.OptionButton10.Value = "Vrai" Then Set Sh = Sheets("liste des articles") 'divers
    If Me.OptionButton11.Value = "Vrai" Then Set Sh = Sheets("liste des articles") 'plâtrerie
    Me.lstArticle.Clear
    '===================' ces 2 lignes sont ?????la cause de la survenue du bug
    Set rg = Sh.Range(Sh.[D2], Sh.[D65536].End(xlUp))
    For Each Cell In rg
    '===================
       With Me.lstArticle
        If Cell.Value = Me.lstDescription.Text Then
           .AddItem Sh.Cells(Cell.Row, 1)
           i = .ListCount - 1
           .List(i, 1) = Sh.Cells(Cell.Row, 3)
            .List(i, 2) = Sh.Cells(Cell.Row, 9)
            .List(i, 3) = Sh.Cells(Cell.Row, 6)
            .List(i, 4) = Sh.Cells(Cell.Row, 7)
 
 
        Else
        End If
    End With
    Next Cell
End Sub
comment faire que la recherche se limite a une seule feuille mais a différent endroits pour diminuer le nombre de feuille
les optionbuttons sont déja reorganisés et fonctionnel
la feuille "liste des articles" est organisée comme ceci
Citation:
plomberie = col D ; électricité = col P ; carrelage = col AA ; prestation = col AM ; SDB = col AY ; placard = col BL ; divers = col BW ; plâtrerie = col CI
il faudrai que "Set rg = Sh.Range(Sh.[D2], Sh.[D65536].End(xlUp))" cherche dans chaque colonne
les optionButtons sont toujours bien actif
s'il vous faut un fichier d'aide pas de soucis

merci par avance de vos solutions

Pascal
grisan29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2012, 21h41   #2
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Bonsoir

Quelque chose comme ceci
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
Private Sub lstDescription_Change()
Dim LaCol As Integer, i As Integer
Dim ArrCol As Variant
Dim Sh As Worksheet
Dim c As Range
Dim j As Byte
 
'Ici colonnes respectives pour chaque type de prestation choisie par les OptionButton
ArrCol = Array(39, 4, 16, 27, 51, 64, 75, 87)
For j = 0 To 7
    If Me.Controls("OptionButton" & j + 4) Then Exit For
Next j
LaCol = ArrCol(j)
 
Me.lstArticle.Clear
Set Sh = ThisWorkbook.Worksheets("list_articles")
With Sh
    For Each c In .Range(.Cells(2, LaCol), .Cells(.Rows.Count, LaCol).End(xlUp))
        With Me.lstArticle
            'Ici à adapter les colonnes
            If c.Value = Me.lstDescription.Text Then
                .AddItem c.Offset(0, -3)
                i = .ListCount - 1
                .List(i, 1) = c.Offset(0, -1)
                .List(i, 2) = c.Offset(0, 5)
                .List(i, 3) = c.Offset(0, 2)
                .List(i, 4) = c.Offset(0, 3)
            End If
        End With
    Next c
End With
End Sub
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 02/01/2012, 22h18   #3
Membre habitué
 
pascal
artisan poseur
Inscription : octobre 2006
Messages : 342
Détails du profil
Informations personnelles :
Nom : pascal

Informations professionnelles :
Activité : artisan poseur
Secteur : Bâtiment

Informations forums :
Inscription : octobre 2006
Messages : 342
Points : 137
Points : 137
bonsoir Mercatog
merci pour ta réponse mais il y a un bug a la ligne "for" avec le message disant que la méthode 'range' de l'objet'_worksheets' à échouée
voici de retour le code ou j'ai adapter les colonnes
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
Private Sub lstDescription_Change()
Dim LaCol As Integer, i As Integer
Dim ArrCol As Variant
Dim Sh As Worksheet
Dim c As Range
Dim j As Byte
 
'Ici colonnes respectives pour chaque type de prestation choisie par les OptionButton
ArrCol = Array(39, 4, 16, 27, 51, 64, 75, 87)
For j = 0 To 7
    If Me.Controls("OptionButton" & j + 4) Then Exit For
Next j
LaCol = ArrCol(j)
 
Me.lstArticle.Clear
Set Sh = ThisWorkbook.Worksheets("list_articles")
With Sh
    For Each c In .Range(.Cells(2, LaCol), Cells(.Rows.Count, LaCol).End(xlUp))
        With Me.lstArticle
            'Ici à adapter les colonnes
            If c.Value = Me.lstDescription.Text Then
                .AddItem c.Offset(0, -3)
                  i = .ListCount - 1
                .List(i, 1) = Sh.Cells(Cell.Row, 3)
                .List(i, 2) = Sh.Cells(Cell.Row, 9)
                .List(i, 3) = Sh.Cells(Cell.Row, 6)
                .List(i, 4) = Sh.Cells(Cell.Row, 7)
 
            End If
        End With
    Next c
End With
End Sub
cordialement

Pascal
grisan29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2012, 22h27   #4
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Désolé, corrigé une petite coquille
Code :
For Each c In .Range(.Cells(2, LaCol), .Cells(.Rows.Count, LaCol).End(xlUp))
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 02/01/2012, 22h40   #5
Membre habitué
 
pascal
artisan poseur
Inscription : octobre 2006
Messages : 342
Détails du profil
Informations personnelles :
Nom : pascal

Informations professionnelles :
Activité : artisan poseur
Secteur : Bâtiment

Informations forums :
Inscription : octobre 2006
Messages : 342
Points : 137
Points : 137
bonsoir Mercatog
merci pour ta réponse mais j'aurai du trouvé qu'il manquait le point devant cells
bref tout compte fait je joint le fichier car il y a d'autres bug insurmontable a mon niveau

merci par avance

Pascal
grisan29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2012, 22h58   #6
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Lignes 24 à 27 sont bizarres comme tu les a copié.

Code :
1
2
3
4
                .List(i, 1) = c.Offset(0, -1)
                .List(i, 2) = c.Offset(0, 5)
                .List(i, 3) = c.Offset(0, 2)
                .List(i, 4) = c.Offset(0, 3)
Pas la peine de continuer si tu ne fais pas l'effort.
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/01/2012, 23h14   #7
Membre habitué
 
pascal
artisan poseur
Inscription : octobre 2006
Messages : 342
Détails du profil
Informations personnelles :
Nom : pascal

Informations professionnelles :
Activité : artisan poseur
Secteur : Bâtiment

Informations forums :
Inscription : octobre 2006
Messages : 342
Points : 137
Points : 137
bonsoir Mercatog
avec mes excuses je ferai mieux d'aller dormir(manque du week end dernier)que de faire des betises a ne pas suivre tes directives
j'ai remplacer par
Code :
1
2
3
4
       .List(i, 1) = c.Offset(0, 3)
       .List(i, 2) = c.Offset(0, 9)
       .List(i, 3) = c.Offset(0, 6)
       .List(i, 4) = c.Offset(0, 7)
merci, retour demain matin avec les idées claires
Pascal
grisan29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2012, 08h10   #8
Membre habitué
 
pascal
artisan poseur
Inscription : octobre 2006
Messages : 342
Détails du profil
Informations personnelles :
Nom : pascal

Informations professionnelles :
Activité : artisan poseur
Secteur : Bâtiment

Informations forums :
Inscription : octobre 2006
Messages : 342
Points : 137
Points : 137
bonjour a tous
me voici avec des idées plus claires
donc j'ai modifié les .list comme ceci
Code :
1
2
3
4
5
 
                .List(i, 1) = c.Offset(0, -1)
                .List(i, 2) = c.Offset(0, 5)
                .List(i, 3) = c.Offset(0, 2)
                .List(i, 4) = c.Offset(0, 4)
mais cela ne fonctionne pas sur tous les optionbuttons
cordialement

Pascal
grisan29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2012, 10h29   #9
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Il faudrait adapter les n° de colonnes respectifs dans ArrCol liés à chaque optionButton
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 03/01/2012, 10h50   #10
Membre habitué
 
pascal
artisan poseur
Inscription : octobre 2006
Messages : 342
Détails du profil
Informations personnelles :
Nom : pascal

Informations professionnelles :
Activité : artisan poseur
Secteur : Bâtiment

Informations forums :
Inscription : octobre 2006
Messages : 342
Points : 137
Points : 137
bonjour Mercatog

merci pour ta réponse mais il reste les 2 derniers optionbutton qui reste muet

cordialement

Pascal
grisan29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2012, 11h26   #11
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 696
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 696
Points : 1 448
Points : 1 448
Bonjour,

Il faut également adapter

Code :
1
2
Private Sub OptionButton10_Click()
 Set rg = Sh.Range(Sh.[BX2], Sh.[BX65536].End(xlUp))
Code :
1
2
3
 
Private Sub OptionButton11_Click()
 Set rg = Sh.Range(Sh.[CJ3], Sh.[CJ65536].End(xlUp))
Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 03/01/2012, 12h14   #12
Membre habitué
 
pascal
artisan poseur
Inscription : octobre 2006
Messages : 342
Détails du profil
Informations personnelles :
Nom : pascal

Informations professionnelles :
Activité : artisan poseur
Secteur : Bâtiment

Informations forums :
Inscription : octobre 2006
Messages : 342
Points : 137
Points : 137
Bonjour Mercatog et gFZT82
un grand merci de votre aide car je n'avais pas vu ces détails qui font la différence entre vous et moi
cordialement

Pascal
grisan29 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 03h46.


 
 
 
 
Partenaires

Hébergement Web