Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
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 30/01/2012, 13h49   #1
Candidat au titre de Membre du Club
 
Homme Bertrand
Inscription : octobre 2011
Messages : 47
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : octobre 2011
Messages : 47
Points : 14
Points : 14
Par défaut Boucle test nombre images

Bonjour,
Je cherche à compter un nombres d'images
nomimage représente le chemin et le nom de base de l'image
Pour la seconde image, ce nom de base est suivi de b, puis c pour la 3ème,..
Pour un nombre max de 3, j'ai commencé à écrire (les déclarations de variables ne sont pas reprises)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
RepertoireImage1 = CurrentProject.Path & nomimage & ".jpg"
RepertoireImage2 = CurrentProject.Path & nomimage & "b.jpg"
RepertoireImage3 = CurrentProject.Path & nomimage & "c.jpg"
 
NbreImageTempo = 0
 
If Dir(RepertoireImage1) <> "" Then
                                NbreImageTempo = 1
                                If Dir(RepertoireImage2) <> "" Then
                                    NbreImageTempo = 2
                                        If Dir(RepertoireImage3) <> "" Then
                                        NbreImageTempo = 3
                                        End If
                                    End If
                                End If
Mais cela me semble bien lourd, surtout si je veux passer à un nombre de 10 images
Par avance, merci et bonne journée
105rn2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 13h54   #2
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 876
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 876
Points : 10 741
Points : 10 741
Envoyer un message via MSN à jpcheck
Salut,

il est peut-être plus judicieux de passer par une variable que tu vas incrémenter au fur et à mesure.

Les lettres de l'alphabet pouvant se retrouver par leur code ASCII (a= 97, b=98, etc.)

On peut faire une boucle comme ceci :

Code :
1
2
3
4
5
6
7
8
9
Dim i As Integer
Dim compteur as Integer
compteur = 0
'ce code ne gère pas le a, vu que l'image avec le a n'existe pas, et tu pourras donc trouver le test seul :)
For i = 98 to 98+10 'nombre à déterminer par la suite
   If Dir(CurrentProject.Path & nomimage & Asc(i) 1 ".jpg") <>"" Then compteur = compteur +1
Next i
 
MsgBox Compteur
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/01/2012, 14h47   #3
Candidat au titre de Membre du Club
 
Homme Bertrand
Inscription : octobre 2011
Messages : 47
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : octobre 2011
Messages : 47
Points : 14
Points : 14
Bonjour et merci,
ça a l'air tellement simple, quand on y pense et que l'on sait !
comme ça ne marchait pas , j'ai remplacé
Code :
If Dir(CurrentProject.Path & nomimage & Asc(i) 1 ".jpg") <>"" Then compteur = compteur +1
par
Code :
If Dir(CurrentProject.Path & nomimage & Chr(i) & ".jpg") <>"" Then compteur = compteur +1
et ça marche, impec !
merci encore et bonne journée !
Bertrand
105rn2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 15h00   #4
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 876
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 876
Points : 10 741
Points : 10 741
Envoyer un message via MSN à jpcheck
Bien evidemment
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/01/2012, 15h37   #5
Candidat au titre de Membre du Club
 
Homme Bertrand
Inscription : octobre 2011
Messages : 47
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : octobre 2011
Messages : 47
Points : 14
Points : 14
Re,
Pour aller plus loin, j'aimerais afficher un certain nombre de boutons en fonction du résultat trouvé
Le boutons s'appellent tous BtImage + numéro (1 à 10)
J'aimerais créer une fonction dans le module général pour pouvoir l'appeler depuis plusieurs formulaires en y envoyant le chemin et le nbre max d'images

Pour effacer les boutons au départ, j'ai trouvé
Code :
1
2
3
4
5
6
7
'efface tous les boutons commençant par btimage
For Each ctl In Me.Controls
    Select Case Left(ctl.Name, 7)
             Case "btImage"
             ctl.Visible = False
    End Select
Next ctl
Mais je n'arrive pas à l'exporter dans le module à cause de "Me.Controls"
Etant débutant, j'ai du mal à trouver les instructions gérant les contrôle
Par avance, merci
Bertrand
105rn2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 16h00   #6
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 876
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 876
Points : 10 741
Points : 10 741
Envoyer un message via MSN à jpcheck
Si tu connais le nom du formulaire tu peux passer par
Code :
Forms(strFormName).Controls()
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/01/2012, 18h00   #7
Candidat au titre de Membre du Club
 
Homme Bertrand
Inscription : octobre 2011
Messages : 47
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : octobre 2011
Messages : 47
Points : 14
Points : 14
Je peux toujours passer le nom du formulaire en paramètres
mais il va falloir que je me trouve un tuto sur la gestion des controls, car là je nage !
En tout cas, merci pour tout !
Bertrand
105rn2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 18h05   #8
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 876
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 876
Points : 10 741
Points : 10 741
Envoyer un message via MSN à jpcheck
http://access.developpez.com/cours/?...tuto#controles
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/01/2012, 23h27   #9
Candidat au titre de Membre du Club
 
Homme Bertrand
Inscription : octobre 2011
Messages : 47
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : octobre 2011
Messages : 47
Points : 14
Points : 14
Bonsoir,
Je n'ai pas vraiment trouvé mon bonheur dans les tutos, j'ai donc un peu bidouilé et trouvé :
Code :
1
2
3
4
5
6
7
8
9
10
Public Sub EffaceBoutonImage(StrFormName As String)
'efface tous les boutons commençant par btnimage
Dim ctl As Control
For Each ctl In Forms(StrFormName).Controls
    Select Case Left(ctl.Name, 8)
         Case "btnImage"
            ctl.Visible = False
    End Select
Next ctl
End Sub
Par contre je cherche le code pour afficher ces boutons, du genre
Code :
1
2
3
for i = 1 to NbreBoutonAafficher
btnImage(i).visible = true
next i
est ce possible ?
merci et bonne soirée!
Bertrand
105rn2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 08h49   #10
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 876
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 876
Points : 10 741
Points : 10 741
Envoyer un message via MSN à jpcheck
Yep,

essaie avec ControlType
Code :
1
2
3
4
5
6
For Each ctl In Forms(StrFormName).Controls
    Select Case ctl.ControlType
         Case acImage:
            ctl.Visible = False
    End Select
Next ctl
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 31/01/2012, 09h25   #11
Candidat au titre de Membre du Club
 
Homme Bertrand
Inscription : octobre 2011
Messages : 47
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : octobre 2011
Messages : 47
Points : 14
Points : 14
Re,
Pour afficher les boutons (jusqu'à NbreBouton) J'ai fait autrement :
Code :
1
2
3
4
Dim ctl As Control
For Each ctl In Forms(StrFormName).Controls
If right(ctl.Name, 1) <= NbreBouton Then ctl.Visible = True
Next ctl2
Maintenant, je cherche une façon élégante de gérer le clic sur chacun de ces boutons sans avoir à ré-ecrire BtnImage1_clic, BtnImage2_clic,.
J'ai déjà vu ça qqpart mais plus moyen de me rappeler ou !
Merci encore
Bertrand
105rn2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 09h28   #12
Candidat au titre de Membre du Club
 
Homme Bertrand
Inscription : octobre 2011
Messages : 47
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : octobre 2011
Messages : 47
Points : 14
Points : 14
Pour effacer tous les boutons commençant par BtnImage, j'ai simplifié par

Code :
1
2
3
4
Dim ctl As Control
For Each ctl In Forms(StrFormName).Controls
    If Left(ctl.Name, 8) = "btnImage" Then ctl.Visible = False
Next ctl
105rn2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web