help

kettou

XLDnaute Junior
Bonjour à tous,
voila ca fait quelques temps que je crée un outil de tableau de bord sous excel vba, il fonctionne assez bien mais il reste encore kelke imperfeciant que je suis entrain de régler en ce moment, cependant il y a un petit soucis que je n'arrive pas à régler au niveau du menu général qui est dans une feuille excel, voila le processus est le suivant je selectionne une date dans une liste déroulante ensuite je selectionne une case option parmi trois pour que ca m affiche les noms de fichier dans une liste box ce dernier se pointe dans un repertoire ca marche nickel jusqu'a maintenant . le soucis c'est quand je veux changer de case option je dois choisir une nouvelle fois une date dans la liste déroulante pour actualiser la liste box. le probléme donc comment eviter cette étape?.
mon code est le suivant est le suivant:


Private Sub Worksheet_Change(ByVal Target As Range)
Feuil1.List_ADV.Clear

If Target.Address <> "$F$7" Then Exit Sub
If Target.Value = "" Then Exit Sub
If Option_region.Value = True Then

Dim F, fichier
Dim indice As String
Dim mois As String
Dim LongFilename As String

With Application.FileSearch
.NewSearch
.LookIn = "Y:\01_commun\Suivi ADV\Region"
.Execute
On Error Resume Next
For Each F In .FoundFiles
mois = Mid(Range("F7").Value, 4, 2)

indice = Mid(F, Len(F) - 5, 2)

If mois = indice Then
fichier = Mid(F, 30, Len(F) - 4)
'Debug.Print fichier
fichier = Left(fichier, Len(fichier) - 4)
Debug.Print fichier
Sheets("Feuil1").List_ADV.AddItem fichier
'Debug.Print fichier
End If
Next F
End With
ThisWorkbook.Worksheets(1).Select

ElseIf Option_DVRS.Value = True Then

With Application.FileSearch
.NewSearch
.LookIn = "Y:\01_commun\Suivi ADV\DVRS"
.Execute
On Error Resume Next
For Each F In .FoundFiles
mois = Mid(Range("F7").Value, 4, 2)

indice = Mid(F, Len(F) - 5, 2)

If mois = indice Then
fichier = Mid(F, 28, Len(F) - 4)
Debug.Print fichier
fichier = Left(fichier, Len(fichier) - 4)
Debug.Print fichier
Sheets("Feuil1").List_ADV.AddItem fichier
Debug.Print fichier
End If
Next F
End With
ThisWorkbook.Worksheets(1).Select

Else

With Application.FileSearch
.NewSearch
.LookIn = "Y:\01_commun\Suivi ADV\Equipes ADV"
.Execute
On Error Resume Next
For Each F In .FoundFiles
mois = Mid(Range("F7").Value, 4, 2)
indice = Mid(F, Len(F) - 5, 2)

If mois = indice Then
fichier = Mid(F, 35, Len(F) - 4)
Debug.Print fichier
fichier = Left(fichier, Len(fichier) - 4)
'Debug.Print fichier
Sheets("Feuil1").List_ADV.AddItem fichier
Debug.Print fichier
End If
Next F
End With
ThisWorkbook.Worksheets(1).Select

End If


End Sub


j'éspere que qq pourrait m'aider
merci

Amicalement
 
C

Compte Supprimé 979

Guest
Re : help

Re,

Tout dépend de tes Checkbox, sont-ils de "Formulaire" ou de "Contrôles"

Pour un checkbox de controle, apparait dans la barre de formule
=INCORPORER("Forms.CheckBox.1";"")

A+
 
C

Compte Supprimé 979

Guest
Re : help

Re,

Si j'ai tout bien compris, voici le code à mettre quelque peu optimisé :p

Code:
Option Explicit
Private Sub CheckBox1_Click()
  Call MajListe
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address <> "$F$7" Then Exit Sub
  If Target.Value = "" Then Exit Sub
  Call MajListe
End Sub
Sub MajListe()
  Dim F, fichier
  Dim Indice As String
  Dim Mois As String
  Dim LongFilename As String
  Dim VPath As String, SousDossier As String, Start As Integer
  Feuil1.List_ADV.Clear
  ' Selon la case option cochée
  If Option_region.Value = True Then
    SousDossier = "Region"
  ElseIf Option_DVRS.Value = True Then
    SousDossier = "DVRS"
  Else
    SousDossier = "Equipes ADV"
  End If
  ' Créer le chemin
  VPath = "Y:\01_commun\Suivi ADV\" & SousDossier
  Start = Len(VPath) + 1
  ' Vérifier les fichiers
  With Application.FileSearch
    .NewSearch
    .LookIn = VPath
    .Execute
    On Error Resume Next
    For Each F In .FoundFiles
      Mois = Mid(Range("F7").Value, 4, 2)
      Indice = Mid(F, Len(F) - 5, 2)
      If Mois = Indice Then
        fichier = Mid(F, Start, Len(F) - 4)
        'Debug.Print fichier
        fichier = Left(fichier, Len(fichier) - 4)
        Debug.Print fichier
        Sheets("Feuil1").List_ADV.AddItem fichier
        'Debug.Print fichier
      End If
    Next F
  End With
  ThisWorkbook.Worksheets(1).Select
End Sub

Tu peux remplacer le code existant par celui-ci

A+
 
C

Compte Supprimé 979

Guest
Re : help

Re,

ca marche pas (apparament il n'aime pas option explicit)
Désolé, "Option Explicit" c'est l'option que je mets systématiquement dans mes codes ... le code est plus rapidement exécuté .... mais cela oblige à déclarer toutes les variables

L'évènement de la checkbox c'est sur click et c'est
Code:
Private Sub CheckBox1_Click()
  Call MajListe
End Sub

Regarde ma demande en MP

A+
 

kettou

XLDnaute Junior
Re : help

Re,


Désolé, "Option Explicit" c'est l'option que je mets systématiquement dans mes codes ... le code est plus rapidement exécuté .... mais cela oblige à déclarer toutes les variables

L'évènement de la checkbox c'est sur click et c'est
Code:
Private Sub CheckBox1_Click()
  Call MajListe
End Sub

Regarde ma demande en MP

A+

re,
je viens d envoyer un MP

C'est bon ca marche g changé check box par case otion et ca marche parfait
merci bruno pour l'aide
A+
 
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 505
Messages
2 089 070
Membres
104 020
dernier inscrit
Mzghal