IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

[VBA] Boucle "For" avec valeurs spécifiques


Sujet :

VBA Access

  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 68
    Par défaut [VBA] Boucle "For" avec valeurs spécifiques
    Bonjour à tous :

    Est-il possible en vba de faire une boucle de type "for" avec des valeurs spécifiques ?

    Je m'explique :

    For i = 1 to 10 va faire la boucle avec les valeurs de 1 à un 10.

    J'aimerai un truc du genre For i in List (avec List = [1,3,4,35,76])

    Est-ce possible, qu'elle est la nomenclature ?

    Merci d'avance pour votre aide et bonne journée

  2. #2
    Membre confirmé
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 68
    Par défaut
    Voilà le code que j'ai essayé de faire mais il fonctionne pas. Je pense que ma liste n'est pas définie de manière correcte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function test()
    Dim i As Integer
     
    For Each i In [2,3,4,5]
        MsgBox (i)
    Next i
     
    End Function

  3. #3
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 411
    Par défaut
    je pense que tu peut créer un tableau avec tes valeurs et à la place d'utilisé i comme valuer tu l'utilise comme l'index de ton tableau

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2003
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2003
    Messages : 50
    Par défaut
    Salut,

    Ceci devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub test()
        Dim i As Variant
     
        For Each i In Array(2, 5, 7, 9)
            MsgBox i
        Next i
     
    End Sub
    A+,
    MasterSleepy.

  5. #5
    Membre confirmé
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 68
    Par défaut
    Cool ca marche nickel !

    Merci bien ça fait 20 minutes que je bidouille pour trouver la formule qui marche!

    Encore merci et bonne journée

  6. #6
    Nouveau candidat au Club
    Femme Profil pro
    Analyse système
    Inscrit en
    Octobre 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2016
    Messages : 2
    Par défaut
    Salut,
    Je suis tombé sur ce post car je cherche à faire la même chose mais lorsque j'utilise cette méthode sur mon code qui utilise plein de GOTO, j'obtiens un Runtime 10 car l'array est fixe ou temporairement bloqué.
    Quelqu'un aurait une solution alternative?
    Mon but est de boucler avec FOR sur les valeurs suivantes 0.5 / 1 / 2 / 3 / 4 / 5 / 6.
    Merci d'avance pour toute aide.
    @+

  7. #7
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 973
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 973
    Par défaut
    Bonjour,
    évidemment, tu penses que sans le code (qui plus est, avec des GOTO tout partout, selon tes dires) on est capable de te dire où çà coince ? Oui c'est possible, mais pas sans boule de cristal ...

  8. #8
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2025
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mars 2025
    Messages : 15
    Par défaut
    Bonjour,

    Je rencontre le même soucis, mais la solution donnée (en 2016, peut-être y a-t-il eu du changement dans la syntaxe) ne fonctionne pas chez moi...

    Si j'écris "manuellement"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    For o = 1 To 3
        Cells(o, 11) = Cells(o, 11) / m
        Cells(o, 13) = Cells(o, 13) / m
        Cells(o, 27) = Cells(o, 27) / m
    Tout fonctionne parfaitement.

    Par contre, si je code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For o = 1 To 3
            For Each p In Array(11, 13, 27)
            Cells(o, p) = Cells(o, p) / m
            Next
    Next
    VBA me met en jaune la ligne 4...

    Bien sûr j'ai allégé pour l'exemple la liste, je dois faire la boucle sur une quinzaine de valeurs, alors si je peux alléger un peu et ne pas avoir à recopier 15 fois la même commande...

    Une idée ?

    Merci d'avance !

  9. #9
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 627
    Billets dans le blog
    67
    Par défaut
    Bonsoir,

    C'est possible d'avoir le message d'erreur ?
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  10. #10
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2025
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mars 2025
    Messages : 15
    Par défaut
    Bonjour,

    La voici, "Erreur d'exéctution '13' : incompatibilité de type.

    Nom : Capture d’écran 2025-03-25 110122.png
Affichages : 368
Taille : 6,4 Ko

    Merci d'avance !

  11. #11
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 627
    Billets dans le blog
    67
    Par défaut
    Bonjour,

    vérifiez si vous n'avez pas une cellule vide ou du texte dedans.

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  12. #12
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2025
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mars 2025
    Messages : 15
    Par défaut
    Bonjour,

    Merci pour ce retour, qui a mis le doigt sur une des coquilles les plus bêtes que j'ai pu faire en vba : j'ai un peu simplifié le code pour écrire mon post initial : mon paramètre "o" ne va pas de 1 à 3 mais de "l" à "l+m-1", sauf que... le "1" et le "l" se ressemblent énoooooooooormément dans mon éditeur vba...

    Donc depuis le début la synthaxe de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For o = l To l + m - 1
            For Each p In Array(5, 7, 9, 11, 13, 27, 32, 33, 34, 35, 36, 37, 38, 39, 40)
            Cells(o, p) = Cells(o, p) / m
            Next
     Next
    fonctionnait bien, j'avais juste par mégarde tapé "For o = 1 to l+m-1" au lieu de "For o = l to l+m-1"...

    En effet cela faisait bien une partie de l'opération sur du texte, d'où le message d'erreur.

    Merci donc pour ta réponse !

    Moulinois

    PS : si cela peut servir à quelqu'un par la suite, j'ai remplacé la seconde partie de mon Array (32, 33, 34, 35, ...) par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For Each cell In Range("AH" & l & ":AP" & l + m - 1)
            cell.Value = cell.Value / m
    Next

  13. #13
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 540
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 540
    Par défaut
    Hello,

    Sauf erreur de ma part, tu peux modifier les polices de caractères utilisées par l'éditeur.
    Peut-être en choisir une qui te permet de faire une meilleur distinction entre les caractères "graphiquement proche" ?

  14. #14
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2025
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mars 2025
    Messages : 15
    Par défaut
    En effet c'est possible et c'est ce que j'ai fait, histoire que la boulette ne m'arrive pas à nouveau

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 31
    Dernier message: 28/04/2006, 12h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo