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 :

Problème de Configuration automatique des Itérations


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2016
    Messages : 3
    Par défaut Problème de Configuration automatique des Itérations
    Bonjour, je demande l'aide bienveillante d'un spécialiste pour m'aider à résoudre ce petit problème qui m'est posé en précisant ci- dessous le contexte d'utilisation avec ses bons et mauvais résultats et l'extrait de la macro concernée. En vous remerciant d'avance de ce qu'il faut modifier.

    Fonctionnement de la macro :
    1* Etat initial : Itcl=12 (configuration de max.itérations par une autre macro ou manuellement)

    2* Texte placé en B8 : max.itérations à 200 par sub ItEcl ; c’est conforme

    Durant l’incrémentation des itérations Itcl=200
    3* …Texte retiré en B8 : max.itérations toujours à 200 ; Itcl toujours à 200 (C’est non conforme) alors que sub It0cl devrait configurer max.itérations à 10

    Le seul moyen d’obtenir ce résultat (max.itérations à 10) est d’exécuter la macro par le triangle vert alors que la macro devrait tourner en boucle y compris durant l’incrémentation des itérations.
    Comment obtenir cette reconfiguration de max.itérations à 10 ?

    Extrait de la Macro concernée :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Private Sub Worksheet_Calculate()
    Dim Itcl As String
    Itcl = Application.MaxIterations ‘Nbre maxi d’itérations actuelles configurées              
    
     If Range("B8").Value = "" And Itcl > 50 Then ‘Texte retiré dans Cellule B8 et maxi itérations configuré >50
                   	 It0cl ‘Configurer le maxi d’itérations à 10 (valeur 10 en BE1)
     End If
    
    If Range("B8").Value <> "" Then ‘Texte écrit dans Cellule B8
    
           		 ItEcl ‘Configurer le maxi d’itérations à 200 (valeur 200 en BF1)
    End If
    End Sub
    --------------------------------------------------------------------------------
    Sub ItEcl()
                With Application
                    	Application.EnableEvents = False
                    	 .Iteration = True
                     	.MaxIterations = Range("BF1").Value 'maxi d’itérations à 200 (valeur 200 en BF1)
                   	 Application.EnableEvents = True
                End With
    End Sub
    ---------------------------------------------------------------------------------
    Sub It0cl()
                With Application
                    	Application.EnableEvents = False
                   	 .Iteration = True
                   	 .MaxIterations = Range("BE1").Value 'maxi d’itérations à 10 (valeur 10 en BE1)
                   	 Application.EnableEvents = True
                End With
    End Sub

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur VBA
    Inscrit en
    Avril 2017
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur VBA
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2017
    Messages : 122
    Par défaut
    le code a l'air de fonctionner correctement.


    Le souci est dans ce qui est expurgé du code cité.
    Dans un cas comme ça met des points d'arrêts pour voir ce qui se passe, les valeurs trouvées.

    vérifier si B8 est bien vide, le nombre d'itération trouvé.

    Passe par debug.print en fin de procédure pour ne pas changer tes objets actifs et pouvoir surveiller ce qui se passe

    en concatenant itcl, range("B8").value et application.maxiterations




    "Le seul moyen d’obtenir ce résultat (max.itérations à 10) est d’exécuter la macro par le triangle vert alors "
    1/ resultat 10 :itcl est peut etre inférieur ou égal à 50 et du coup la macro n'entre pas dans le if
    2/ le triange vert : quand ça marche ou ne marche plus avec le triangle vert, c'est certainement que le code fait appel à des objets par défaut (actifs, sélectionnés) au lieu de les forcer. Du coup passer dans le vbe et revenir dans la fenêtre réactive/redéfini les objets sélectionnés.

    Tu gagneras en fiabilité de développement a faire call itEcl, à affecter ta feuille active en début de traitement et à y faire appel, ...
    On voit que le code est assez aléatoire, désolé pour le terme, mais faire application.enableevents dans un with application c'est l'effet que ça me fait, ainsi que le fait de désactiver les événements pour réaliser des instructions qui ne me semblent pas générer d'événement ... Même si le code a été purgé et qu'il y avait une raison à faire cela ainsi, en supprimant ces lignes de code, ces instructions auraient du être supprimées aussi.

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Je lis :
    Il se trouve que la chaîne de caractères (donc) "200" est < que la chaîne de caractères "50"
    200 est > 50. Mais ni 200, ni 50 ne sont des chaînes de caractères, mais des numériques. ta variable Itcl est à typer correctement.

  4. #4
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2016
    Messages : 3
    Par défaut
    Merci de vos précieux conseils
    Je regarde cela avec précision et je vous tiens au courant très vite.

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/05/2015, 18h19
  2. Réponses: 5
    Dernier message: 20/06/2011, 18h26
  3. Configuration automatique des switches cisco 3750
    Par joss0204 dans le forum Réseau
    Réponses: 0
    Dernier message: 30/03/2011, 23h01
  4. Réponses: 11
    Dernier message: 27/06/2009, 11h42
  5. [VB Excel] Problème avec le nom automatique des TCD
    Par RedBurn dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/12/2005, 13h30

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