Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionLe problème n'était pas simple à la base, mais il est logique et clair à la fin. C'est le principal.
Une précision : dans chaque schéma : c'est toi qui remplis la colonne en blanc ("liste des noms") manuellement ?
Et si oui (fort probablement) : quand ? car je vois mal comment si avant l'extraction elle-même.
Je ne vois par contre nulle part un rapport quelconque avec un nom de feuille (dont tu avais parlé plus haut).
Ben heu je pensais préremplir la liste avant de lancer l'extraction justement. Je sais déjà quels noms devront porter mes images. Donc avant de réaliser l'extraction, je suis à même de prédire les futurs noms. Donc la liste des noms doit être remplie avant l'extraction.
Tu as créé un tableau dynamique pour gérer les rythmes, un autre pour les co-rythmes. Je me suis dis pourquoi pas un troisième qui contient les noms. Qu'en pense tu ?
'les paramètres du dossier Dim mondossier As String, madesti As String, filtre As String, fic As String, rythme, corrythme mondossier = Range("C3") ' <<<<<======================= ici ton dossier d'images à copier madesti = Range("C4") & "" ' <<<<<<<<<<<<<=========== ici le dossier (éventuellement à créer) où envoyer tes trucs filtre = "\*" & Range("C5") '<<<<<============== ici : l'extension à filtrer rythme = Array(Range("C6"), Range("C8"), Range("C10")) '<<<<<<======== ici tes cycles répétés corrythme = Array(Range("C7"), Range("C9"), Range("C11")) '<<<<<======== ici les conservés correspondant à chaque série ' Sheets("MA_FEUILLE").Select 'Je sélectionne justement la feuille qui m'interresse ici ' Liste_Des_Noms = Array(Range("C4")) 'Ici je définis le début de ma liste (le nom suivant se trouve en Range("C5") etc.) ' appel de l'horloge horloge mondossier, filtre, madesti, rythme, corrythme
' Sheets("MA_FEUILLE").Select 'Je sélectionne justement la feuille qui m'interresse ici ' Liste_Des_Noms = Array(Range("C4"),Range("C5"),Range("C6"),Range("C7")...) 'Ici je définis le début de ma liste (le nom suivant se trouve en Range("C5") etc.)
comment pourrais-tu savoir à l'avance combien de noms renseigner ainsi, puisque tu ne sais pas combien de cycles de séries différentes va contenir tel ou tel autre dossier ?
Et d'un dossier à l'autre, tout peut changer !
Private Type BrowseInfo hWndOwner As Long pIDLRoot As Long pszDisplayName As Long lpszTitle As Long ulFlags As Long lpfnCallback As Long lParam As Long iImage As Long End Type Const BIF_RETURNONLYFSDIRS = 1 Const MAX_PATH = 260 Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long) Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long Private Sub ListBox1_Click() Dim depart As Worksheet Set depart = ActiveSheet ma_feuille = ListBox1.List(ListBox1.ListIndex) If ma_feuille <> "NOUVELLE A CREER" Then Range("G2").Value = ListBox1.List(ListBox1.ListIndex) Else toto = InputBox("donner un nom à cette nouvelle feuille") On Error Resume Next With Worksheets.Add .Name = toto End With Range("G2").Value = toto On Error GoTo 0 End If depart.Activate ListBox1.Visible = False End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) ListBox1.Visible = False If Target.Address Range("B2").Address Or Target.Address Range("C2").Address Then If Target.Column = 2 Then monmsg = "Sélectonne le dossier à traiter puis clique sur OK" Else monmsg = "Sélectonne le dossier d'accueil puis clique sur OK" End If Dim iNull As Integer, lpIDList As Long, lResult As Long Dim sPath As String, udtBI As BrowseInfo With udtBI .hWndOwner = 0 .lpszTitle = lstrcat(monmsg, "") ' lstrcat("C:", "") .ulFlags = BIF_RETURNONLYFSDIRS End With lpIDList = SHBrowseForFolder(udtBI) If lpIDList Then sPath = String$(MAX_PATH, 0) SHGetPathFromIDList lpIDList, sPath CoTaskMemFree lpIDList iNull = InStr(sPath, vbNullChar) If iNull Then sPath = Left$(sPath, iNull - 1) End If End If Target.Value = sPath ElseIf Target.Address = Range("G2").Address Then remplir_choix_feuille End If End Sub Private Sub remplir_choix_feuille() ListBox1.Clear For Each sh In Worksheets If sh.Name <> ActiveSheet.Name Then ListBox1.AddItem sh.Name End If Next ListBox1.AddItem "NOUVELLE A CREER" ListBox1.Left = Range("G2").Left ListBox1.Top = Range("G2").Top ListBox1.Visible = True End Sub