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

Macros et VBA Excel Discussion :

variable de même nom dans une boucle


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Avatar de frunch
    Homme Profil pro
    Développeur / comptable
    Inscrit en
    Janvier 2022
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur / comptable
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2022
    Messages : 174
    Par défaut variable de même nom dans une boucle
    Bonjour à tous,
    J'ai des absences de salariés par mois, et je dois déterminer les jours de présence qu'avec les absences.
    Mon probléme est de stocker les variables à chaque tour de boucle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        list1 = Array("jpr2", "jpr3", "jpr4", "jpr5")
            For m = 0 To UBound(list1)
     jpr(m) = (Day(tb4.DataBodyRange(i + k, 4).Value)) - Day(tb4.DataBodyRange(i + k - 1, 5).Value) - 1
            next m
    Merci pour votre aide

  2. #2
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 575
    Par défaut
    Bonjour,
    Du solution avec un dictionnary.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    Dim list1 As Variant
    Dim dict As Object
    Dim m As Long
    Dim i As Long, k As Long
     
    Set dict = CreateObject("Scripting.Dictionary")
    list1 = Array("jpr2", "jpr3", "jpr4", "jpr5")
     
    For m = 0 To UBound(list1)
        ' Remplacez i et k par vos indices actuels
        Dim jourDebut As Long
        Dim jourFin As Long
        jourDebut = Day(tb4.DataBodyRange(i + k - 1, 5).Value)
        jourFin = Day(tb4.DataBodyRange(i + k, 4).Value)
     
        ' Stockage dans le dictionnaire avec le nom correspondant
        dict(list1(m)) = jourFin - jourDebut - 1
    Next m
     
    ' Exemple pour lire les valeurs :
    Debug.Print dict("jpr2")

  3. #3
    Membre très actif
    Avatar de frunch
    Homme Profil pro
    Développeur / comptable
    Inscrit en
    Janvier 2022
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur / comptable
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2022
    Messages : 174
    Par défaut
    Bonjour Thumb down,

    Je comprends pas l'utilité du dictionnaire.

    Voila le fichier pour voir le problème concrètement:
    forum.xlsm
    Faire clic-droit
    Sélectionner juillet, puis FITROI

    Merci

  4. #4
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    Bonjour

    Une simple requête PowerQuery permet cela

    Il serait bien de préciser si on compte les samedi et dimanche et JF ou pas ou si on travailles en jours calendaires

    A noter que
    • tu as des textes à la place de certains montants dans les absences
    • le nombre de jours du mois de devait être calculé partout par formule (pas très sain de mélanger saisie et formule dans une colonne), ce qui revoie à la 1ère remarque
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      =FIN.MOIS(DATE(Q8;N8;1);0)-DATE(Q8;N8;1)+1
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur :plusser: c'est toujours apprécié...

  5. #5
    Membre très actif
    Avatar de frunch
    Homme Profil pro
    Développeur / comptable
    Inscrit en
    Janvier 2022
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur / comptable
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2022
    Messages : 174
    Par défaut
    @Thumb down,
    En appliquant ta méthode, çà bug ici
    Nom : bug.png
Affichages : 130
Taille : 27,4 Ko

  6. #6
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 191
    Billets dans le blog
    2
    Par défaut
    Re,

    C'est encore supporté dans les Excel modernes sauf erreur de ma part
    Oui, il faut juste aller dans les options et cocher une case
    En même temps, on peut cocher une case pour que les macros Excel 4 fonctionnent, alors je ne suis pas trop étonné

  7. #7
    Membre très actif
    Homme Profil pro
    Auto entrepreneur
    Inscrit en
    Décembre 2021
    Messages
    386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Auto entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2021
    Messages : 386
    Par défaut
    Un essai Power Query avec une requête tcd. Le tableau restitue les triplets Année Mois Nom même en cas d'absences sur plusieurs mois dans le tableau des absences.


    Nom : Capture.JPG
Affichages : 72
Taille : 50,6 Ko

    forum2.xlsx

    Que les experts soient indulgents... Il y a sans doute plus simple.

  8. #8
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 575
    Par défaut
    Dans ton code je ne vois pas la création de l'instance ditcl
    Que dit le message d'erreur ?
    Set dictl = CreateObject("Scripting.Dictionary")

  9. #9
    Membre très actif
    Avatar de frunch
    Homme Profil pro
    Développeur / comptable
    Inscrit en
    Janvier 2022
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur / comptable
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2022
    Messages : 174
    Par défaut
    Désolé j'ai pas mis le fichier.
    forum.xlsm

  10. #10
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    RE

    Manifestement je parle dans le vide... mais ça pourrait en intéresser d'autres

    Avec une table des salariés et un tableau des absence où j'ai prévu éventuellement des absences à cheval sur plusieurs mois ou exercices on obtient par requête
    Images attachées Images attachées  
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur :plusser: c'est toujours apprécié...

  11. #11
    Membre très actif
    Avatar de frunch
    Homme Profil pro
    Développeur / comptable
    Inscrit en
    Janvier 2022
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur / comptable
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2022
    Messages : 174
    Par défaut
    Une simple requête PowerQuery permet cela
    Non je préfèrerais pas répondre aux pollueurs Powerquery qu'il y a ici et d'autres forums et qui sont toujours les mêmes.
    J'appelle çà de la pub puisqu'aucune démonstration complète n'est faite derrière.
    Je vais faire une application de paie et je vois mal l'utilisateur se faire des requêtes Powerquery à chaque clic de bouton.
    Vous avez un salon dédié à Powerquery et je ne vois personne venir proposer de solutions par macro, alors faites pareil ici.
    La seule remarque que j'ai trouvé utile était la formule sur les mois, que j'ai repris.

  12. #12
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    Bonjour

    Citation Envoyé par frunch Voir le message
    ...
    Je vais faire une application de paie et je vois mal l'utilisateur se faire des requêtes Powerquery à chaque clic de bouton.
    Vous avez un salon dédié à Powerquery et je ne vois personne venir proposer de solutions par macro, alors faites pareil ici.
    L'utilisateur "ne se fait pas de requêtes" : elles sont faites une fois pour toutes comme le code VBA...

    Le principe d'un forum est aussi de montrer d'autres pistes quand on pense qu'elles sont plus adaptées : le mec qui me demande de lui apprendre à nager pour aller de l'autre côte du fleuve, je lui explique où est le pont le plus proche et en général il ne rejette pas la solution...

    Nombreux sont ceux qui m'ont remercié pour des propositions PowerQuery...

    Je note cependant de ne surtout plus vous répondre puisque cela vous gêne...
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur :plusser: c'est toujours apprécié...

  13. #13
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 127
    Par défaut
    Salut

    Citation Envoyé par frunch Voir le message
    J'appelle çà de la pub puisqu'aucune démonstration complète n'est faite derrière.
    Ou peut-être que tu ne veux pas les voir. Ca tombe bien...
    Espaces entre des chiffres - Macros et VBA Excel

    Il me semble qu'on a été plusieurs à en faire la démonstration complète et j'ai vu mainte fois 78chris le faire sur de nombreux fils.

    Citation Envoyé par frunch Voir le message
    Non je préfèrerais pas répondre aux pollueurs Powerquery qu'il y a ici et d'autres forums et qui sont toujours les mêmes.
    Du coup j'imagine que ça explique le mutisme face aux solutions proposées

    Comme dit dans le message précédent, power query n'est qu'un outil, comme VBA en est un. Dans la même logique, tu crées le vba/power query et c'est transparent pour l'utilisateur, les mises à jour de requêtes se font via VBA. C'est rapide et flexible... Dommage de s'en priver mais chacun voit midi à sa porte.

    Citation Envoyé par frunch Voir le message
    Vous avez un salon dédié à Powerquery et je ne vois personne venir proposer de solutions par macro, alors faites pareil ici.
    Beaucoup de questions sont posées sur le forum VBa et des solutions apportées avec de simples formules. Faut-il selon toi laisser les gens s'empêtrer avec du VBA qu'ils ne maitrisent pas, plutôt que de faire appel aux formules de base qui font le travail? Pour moi ça reviendrait à faire une boucle VBA au lieu d'utiliser =RechercheX() directement .

    Je ne dérangerais plus tes posts non plus.
    N'hésite pas à mettre un message dans ta signature signalant que tu refuses toute aide faisant appel à Power Query. Ca t'évitera peut-être de te mettre inutilement une partie de la communauté à dos...

    ++
    Qwaz

    PS: Je me demande si le message passe en rouge au bout de 4 pouces rouges, à l'instar des pouces verts. Y'a pas une âme charitable pour mettre le 4ème?

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  14. #14
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 317
    Par défaut
    Citation Envoyé par frunch Voir le message
    Non je préfèrerais pas répondre aux pollueurs Powerquery qu'il y a ici et d'autres forums et qui sont toujours les mêmes.
    J'appelle çà de la pub puisqu'aucune démonstration complète n'est faite derrière.
    Je vais faire une application de paie et je vois mal l'utilisateur se faire des requêtes Powerquery à chaque clic de bouton.
    Vous avez un salon dédié à Powerquery et je ne vois personne venir proposer de solutions par macro, alors faites pareil ici.
    La seule remarque que j'ai trouvé utile était la formule sur les mois, que j'ai repris.
    Bonsoir,
    Jusqu'à présent, j'avais préféré ne rien dire...
    Ce personnage, hostile à toute forme d'entraide (le "bénévolat" n'existe pas dans le droit du travail), ne cesse de profiter de la bonne volonté des forums, et surtout, de ses bénévoles...
    Banni 2 fois du forum "excel-pratique", ainsi que du forum "excel-downloads", pour pratique non conforme aux chartes desdits forums, il ne cesse de multiplier les demandes d'aide aux "bénévoles", pour "développer" des applications "professionnelles", payantes...
    Bref, continuer à lui répondre, c'est de l'esclavage, selon ses convictions (il vend, ce que tu lui donnes gratuitement...)
    A bannir définitivement des forums

  15. #15
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 191
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Sans compter qu'il suffit de dire au départ ou de répondre : je ne souhaite pas de solution PowerQuery parce que...
    on peut le faire poliment mais faut croire que frunch se sent plus intelligent en traitant les personnes qui viennent aider de pollueur
    5ème pouce rouge et toujours pas de fond rouge, je suis un peu déçu

  16. #16
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 575
    Par défaut
    Personnellement je dispose d'excel 2007 et j'avoue que de temps en temps j'aimerais pouvoir utiliser powerQery

  17. #17
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 127
    Par défaut
    Citation Envoyé par Thumb down Voir le message
    Personnellement je dispose d'excel 2007 et j'avoue que de temps en temps j'aimerais pouvoir utiliser powerQery
    Salut

    Les clefs de licence Office 2021/2024 sont données, ça vaut le coup d'en acheter une pour quelques centimes d'euro... Sur CDiscount par exemple.

    Merci pour le test, même si je suis un peu déçu j'avoue.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  18. #18
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 191
    Billets dans le blog
    2
    Par défaut
    Re,

    tu sais que tu as Query tout de même sur Excel 2007, qui ne fonctionne pas parfaitement à l'identique mais permet dejà de faire des requêtes qui s'actualisent ?

  19. #19
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 575
    Par défaut
    Citation Envoyé par tototiti2008 Voir le message
    Re,

    tu sais que tu as Query tout de même sur Excel 2007, qui ne fonctionne pas parfaitement à l'identique mais permet dejà de faire des requêtes qui s'actualisent ?
    Non la première version est sur excel 2013

    Tu confonds pas avec querydef ?

    Édite: j'ai lu query et pensé powerqury! Le serveur est bizarre.

    Oui je savais.

  20. #20
    Membre très actif
    Homme Profil pro
    Auto entrepreneur
    Inscrit en
    Décembre 2021
    Messages
    386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Auto entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2021
    Messages : 386
    Par défaut
    Bonjour à tous,

    J'ai reproduit le tableau de Chris ()

    Nom : Capture.JPG
Affichages : 93
Taille : 79,9 Ko

    Comme on le voit, les absences peuvent être à cheval sur plusieurs mois.
    Pour ramener les absences sur chaque mois concerné, j'ai pensé qu'au lieu de lier une table année-mois, lier une table année-jours et insérer une colonne indiquant si le jour est inclus entre la date de début et de fin.
    Est-ce comme cela que vous auriez fait ? Je pense qu'il y a une solution plus directe.

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/07/2019, 06h40
  2. Réponses: 1
    Dernier message: 24/01/2010, 14h31
  3. Réponses: 1
    Dernier message: 22/11/2007, 22h52
  4. Variable après un ComboBox dans une boucle FOR
    Par Dream Master dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/05/2007, 09h26
  5. Créer un nom de variable qui s'incrémente dans une boucle
    Par Pietro_L dans le forum Général VBA
    Réponses: 3
    Dernier message: 09/05/2007, 15h10

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