acces à dossier (vba)
Le
srogeau

bonjour a tous
le code ci dessous me permets d'afficher des fichiers images a partir de la
valeur d'une combox ,pour l'instant les images,l'userform sont dans le meme
dossier
Private Sub ComboBox1_Change()
'Le mot clé "Me" remplace le nom de l'userform ("formimg")
nom = Me.ComboBox1.Value
On Error Resume Next
fichier = ActiveWorkbook.Path & "" & nom & ".jpg"
Me.Image1.Picture = LoadPicture(fichier)
End Sub
je voudrais afficher des vues qui sont dans 1 autre dossier ex: cmes
documentsmes imagesbateau
comment indiquer ce chemin
j'ai eu une reponse ,mais trop abregee pour comprendre
merci de votre aide
le code ci dessous me permets d'afficher des fichiers images a partir de la
valeur d'une combox ,pour l'instant les images,l'userform sont dans le meme
dossier
Private Sub ComboBox1_Change()
'Le mot clé "Me" remplace le nom de l'userform ("formimg")
nom = Me.ComboBox1.Value
On Error Resume Next
fichier = ActiveWorkbook.Path & "" & nom & ".jpg"
Me.Image1.Picture = LoadPicture(fichier)
End Sub
je voudrais afficher des vues qui sont dans 1 autre dossier ex: cmes
documentsmes imagesbateau
comment indiquer ce chemin
j'ai eu une reponse ,mais trop abregee pour comprendre
merci de votre aide
fichier = "c:mes documentsmes imagesbateau" & nom & ".jpg"
ou tout autre chemin valide
Salutations
JJ
"Srogeau" news:
Remplace ceci
fichier = ActiveWorkbook.Path & "" & nom & ".jpg"
par cela en supposant que bureau est le nom d'un répertoire
fichier = "cmes documentsmes imagesbateau" & "" & nom & ".jpg"
Salutations!
"Srogeau" bonjour a tous
le code ci dessous me permets d'afficher des fichiers images a partir de la
valeur d'une combox ,pour l'instant les images,l'userform sont dans le meme
dossier
Private Sub ComboBox1_Change()
'Le mot clé "Me" remplace le nom de l'userform ("formimg")
nom = Me.ComboBox1.Value
On Error Resume Next
fichier = ActiveWorkbook.Path & "" & nom & ".jpg"
Me.Image1.Picture = LoadPicture(fichier)
End Sub
je voudrais afficher des vues qui sont dans 1 autre dossier ex: cmes
documentsmes imagesbateau
comment indiquer ce chemin
j'ai eu une reponse ,mais trop abregee pour comprendre
merci de votre aide
fichier = "cmes documentsmes imagesbateau" & "" & nom & ".jpg"
Tu es sur Denis ????
Salutations
JJ
"michdenis" news:
si tu parles des 2 points inexistants après le C: ... j'ai seulement fait un copier-coller de sa ligne de code...
Salutations!
fichier = "cmes documentsmes imagesbateau" & "" & nom & ".jpg"
Tu es sur Denis ????
Salutations
JJ
"michdenis" news:
réponses trop abrégées.
"Srogeau" news:
"Srogeau" news:
Comme quoi 2 petits point peuvent rendre pas mal de chose inutile ;o))
Dit moi Denis, le 20/05/04 23.39 sur le post "Recherche dans plusieurs
feuilles", je suis resté sur ma faim, depuis je patauge dans des codes sans
fin et ne trouve pas vraiment une bonne solution. Si tu as le temps
pourrais-tu revoir la chose.Clément aussi, si tu est toujours en ligne,
jettes un oeil SVP, ensemble ont pourra trouver quelque chose de correct.
Bonne journée
JJ
"michdenis" news:
Essaie ceci :
Il est pris pour acquis que tes noms apparaissent dans la plage définie comme suit : Range("C5:T14") et
Range("C18:O27") dans chacune des feuilles le cas échéant ....
Les résultats vont s'afficher dans une feuille ajoutée nommée "Résultat"
'----------------------------------
Sub NomsEtNombre()
Dim Shr As Worksheet, Sh As Worksheet
Dim Sh1 As Worksheet, Rg As Range
Dim Rg1 As Range, C As Range
Dim A As Integer, Nb As Integer
Application.ScreenUpdating = False
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("Résultat").Delete
Set Shr = Worksheets.Add(After:=Sheets(Sheets.Count))
Shr.Name = "Résultat"
For Each Sh In Worksheets
If Sh.Name <> "Résultat" Then
Set Rg1 = Union(Sh.Range("C5:T14"), Sh.Range("C18:O27"))
For Each C In Rg1
If IsError(Application.Match(C, Shr.Range("A1:A5000"), 0)) Then
On Error GoTo 0
For Each Sh1 In Worksheets
If Sh.Name <> "Résultat" Then
Set Rg = Sh1.Range("C5:T27")
Nb = Nb + Application.WorksheetFunction.CountIf(Rg, C)
End If
Next
If Nb > 0 Then
A = A + 1
Shr.Range("A" & A) = C
Shr.Range("B" & A) = Nb
Nb = 0
End If
End If
Next
End If
Next
With Shr
.Range("A1").Sort Key1:=.Range("A1")
.Range("A:B").EntireColumn.AutoFit
End With
Set Shr = Nothing: Set Sh1 = Nothing: Set Sh = Nothing
Set Rg = Nothing: Set Rg1 = Nothing: Set C = Nothing
End Sub
'----------------------------------
Salutations!
"Jacky" Re
Comme quoi 2 petits point peuvent rendre pas mal de chose inutile ;o))
Dit moi Denis, le 20/05/04 23.39 sur le post "Recherche dans plusieurs
feuilles", je suis resté sur ma faim, depuis je patauge dans des codes sans
fin et ne trouve pas vraiment une bonne solution. Si tu as le temps
pourrais-tu revoir la chose.Clément aussi, si tu est toujours en ligne,
jettes un oeil SVP, ensemble ont pourra trouver quelque chose de correct.
Bonne journée
JJ
"michdenis" news:
J'ai adapté le code de cette façon:
If Left(Sh.Name, 4) = Left(Year(Now), 4) Then
''''''pour uniquement voir les feuilles qui ont pour début de nom l'année en
cours qui sont générées automatiquement par un autre code
''''''à la place de ' If Sh.Name <> "Résultat" Then
Set Rg1 = Union(Sh.Range("C5:T14"), Sh.Range("C18:O27"))
For Each C In Rg1
If C <> "" Then '''
'''''''rajouté pour faire le test uniquement sur les cellules non vides
sinon résultat donne des chiffres incohérents et met + de 5 minutes pour la
recherche
If IsError(Application.Match(C, Shr.Range("A1:A5000"), 0)) Then
On Error GoTo 0
For Each Sh1 In Worksheets
If Left(Sh.Name, 4) = Left(Year(Now), 4) Then
''''''pour uniquement voir les feuilles qui ont pour début de nom l'année en
cours
''''''à la place de ' If Sh.Name <> "Résultat" Then
Set Rg = Sh1.Range("C5:T27")
Cela est-il correct???
Pourrais-tu expliquer ces 2 codes:
If IsError(Application.Match(C, Shr.Range("A1:A5000"), 0)) Then
et
Set Rg = Sh1.Range("C5:T27") '''''' pourquoi le C5:T27 ??
Sinon, cela semble fonctionner correctement, et je te remercie d'avoir
consacré du temps à ma demande.
Bonne journée
JJ
"michdenis" news:
If IsError(Application.Match(C, Shr.Range("A1:A5000"), 0)) Then
*** Cette ligne s'assure que de ne pas refaire le décompte pour un nom qui a déjà été recencé dans la feuille
"Résultat". À chaque fois que la procédure trouve une donnée dans la plage de données spécifiées, elle vérifie que ce
nom n'a pas déjà recencé dans la feuille "résultat."
Set Rg1 = Union(Sh.Range("C5:T14"), Sh.Range("C18:O27"))
For Each C In Rg1
If C <> "" Then '''
'''''''rajouté pour faire le test uniquement sur les cellules non vides
sinon résultat donne des chiffres incohérents et met + de 5 minutes pour la
recherche
Ce n'est pas nécessaire si tu utilises ceci :
*** Set Rg1 = Union(Sh.Range("C5:T14"), Sh.Range("C18:O27")) _
.SpecialCells(xlCellTypeConstants, xlTextValues)
If Left(Sh.Name, 4) = Left(Year(Now), 4) Then
''''''pour uniquement voir les feuilles qui ont pour début de nom l'année en
cours
*** Il me semble que je n'ai pas vu cette restriction dans ta demande initiale !
Set Rg = Sh1.Range("C5:T27") '''''' pourquoi le C5:T27 ??
*** Cette ligne provient des bornes de cette plage (Union(Sh.Range("C5:T14"), Sh.Range("C18:O27"))) pour englober cette
plage de cellulles dans une plage unique pour pouvoir utiliser de la fonction CountIf. Cette dernière n'apprécie guère
des plages de cellules non consécutives.
Salutations!
"Jacky" Bonjour Denis
J'ai adapté le code de cette façon:
If Left(Sh.Name, 4) = Left(Year(Now), 4) Then
''''''pour uniquement voir les feuilles qui ont pour début de nom l'année en
cours qui sont générées automatiquement par un autre code
''''''à la place de ' If Sh.Name <> "Résultat" Then
Set Rg1 = Union(Sh.Range("C5:T14"), Sh.Range("C18:O27"))
For Each C In Rg1
If C <> "" Then '''
'''''''rajouté pour faire le test uniquement sur les cellules non vides
sinon résultat donne des chiffres incohérents et met + de 5 minutes pour la
recherche
If IsError(Application.Match(C, Shr.Range("A1:A5000"), 0)) Then
On Error GoTo 0
For Each Sh1 In Worksheets
If Left(Sh.Name, 4) = Left(Year(Now), 4) Then
''''''pour uniquement voir les feuilles qui ont pour début de nom l'année en
cours
''''''à la place de ' If Sh.Name <> "Résultat" Then
Set Rg = Sh1.Range("C5:T27")
Cela est-il correct???
Pourrais-tu expliquer ces 2 codes:
If IsError(Application.Match(C, Shr.Range("A1:A5000"), 0)) Then
et
Set Rg = Sh1.Range("C5:T27") '''''' pourquoi le C5:T27 ??
Sinon, cela semble fonctionner correctement, et je te remercie d'avoir
consacré du temps à ma demande.
Bonne journée
JJ
"michdenis" news: