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 :

Compilation de boucle infinie [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Logistique
    Inscrit en
    Septembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Logistique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2018
    Messages : 7
    Par défaut Compilation de boucle infinie
    Tout d'abord, bien le bonjour à vous tous & toutes ! !
    Je vous remercie déjà d'avance de la future aide que vous pourriez apporter voir du temps à me consacrer .

    Voilou voilou, j'explique donc mon soucis,
    je dois automatiser des tâches spécifiques pour le boulot sans devoir tout faire à la main, le fichier fini en lui même est quasiment fini (enfin je pense x)). Je bloque actuellement sur un système de boucle que j'ai créée, tout d'abord, l'user lance le fichier home, qui va lui permettre de se déplacer dans les divers menus, et ainsi arriver au bouton qui va nous envoyer sur le fichier qui lance la boucle.
    J'ai donc créer la macro qui dit qu'à son lancement, je veux qu'il aille le saveas à tel endroit(chemin pas encore défini mais comme je vais devoir le mettre sur un serveur, je ne le spécifie pas encore pour les tests) avec l'extension "xlsm".
    Private Sub WorkBook_open()
    Dim nf$
    If Not IsNumeric(Left(Me.Name, 4)) Then
    nf = Format(Date, "yyyy-mm-dd")
    nf = Application.GetSaveAsFileName(nf)
    Me.SaveAs nf + "xslm"
    End if
    End Sub
    Jusque là pas de problème, il le save j'ai ma copie sans toucher l'original, mais une fois qu'on ouvre la copie, il recommence la manipulation, il y aurait-il moyen que quand il s'enregistre il erase cette partie du code? Sachant que j'ai encore besoin de l'extension car je gère d'autres macro qui sont vitales pour le bon fonctionnement du fichier ?

    Voilà, voilà, je vous remercie encore d'avance pour le temps que vous allez me consacrer ! .

  2. #2
    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

    Rien n'est plus "spontané" que de penser à subordonner l'exécution d'instructions à un nom du classeur.
    Commence par ce geste simple.

    Et pour mon autre problème
    Désolé, mais je refuse personnellement de traiter deux questions distinctes dans une même discussion.
    Ici, on traite la résolution d'une difficulté spécifique , pas une application.

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Eiselk Voir le message
    une fois qu'on ouvre la copie, il recommence la manipulation, il y aurait-il moyen que quand il s'enregistre il erase cette partie du code?
    Dans ta macro, fais un test sur le nom ou le chemin de ThisWorkbook.
    Si ça ne correspond pas à ceux de l'original, Exit Sub.

    Je précise que je donne là une simple information technique mais que je déconseille ce que tu es en train de faire en plaçant cette macro dans l'évènement Open.
    Mais c'est toi qui voit...

  4. #4
    Membre habitué
    Homme Profil pro
    Logistique
    Inscrit en
    Septembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Logistique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2018
    Messages : 7
    Par défaut
    Je précise que je donne là une simple information technique mais que je déconseille ce que tu es en train de faire en plaçant cette macro dans l'évènement Open.
    Mais c'est toi qui voit...
    L'idéal serait de faire cette manipulation à la fin comme ça pas de soucis? Parce que c'est vrai qu'à l'ouverture, j'ai voulu simplifier la tâche de ceux qui vont l'utiliser mais de l'autre côté il faut réussir à éliminer la macro faites au début. Je vois. Je vais faire des petits tests au soir après le sport.

    Ok unparia, je ferais un autre sujet si besoin en est, je pensais que grouper les 2 serait le plus optimal pour pas encombrer.

  5. #5
    Membre habitué
    Homme Profil pro
    Logistique
    Inscrit en
    Septembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Logistique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2018
    Messages : 7
    Par défaut
    Hello, hello, voilà j'ai fais un bouton qui enregistre sans boucle infinie, et qui enregistre sous directement avec un nom daté.
    Maintenant je suis entrain de regarder pour incrémenter une sorte de compteur, car plusieurs fichiers / jours seront créer avec la dite date, donc pour ne pas erase à chaque fois.

    Si ça peut en aider certains, voici le code.

    Sub SauveGS()
    '
    ' SauveGS Macro
    Dim Path As String, valeur As String
    Path = ActiveWorkbook.Path & "\"
    valeur = Format(Date, "dd-mm-yyyy") & ".xlsm"
    ThisWorkbook.SAVEAS Path & valeur
    End Sub
    Presque résolu donc.

    EDIT: Problème résolu !!

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Eiselk Voir le message
    L'idéal serait de faire cette manipulation à la fin comme ça pas de soucis?
    Perso, je suis contre les macros activées à l'ouverture ou la fermeture. Il est trop difficile de les contrôler et de les utiliser sereinement.

    Citation Envoyé par Eiselk Voir le message
    Maintenant je suis entrain de regarder pour incrémenter une sorte de compteur, car plusieurs fichiers / jours seront créer avec la dite date, donc pour ne pas erase à chaque fois.
    Dans le nom de fichier, ajoute heures, minutes, secondes, etc.

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

Discussions similaires

  1. AIDE Bouton copier d'une feuille à une autre
    Par vincent59139 dans le forum Excel
    Réponses: 3
    Dernier message: 19/09/2013, 14h03
  2. Réponses: 2
    Dernier message: 23/03/2013, 00h42
  3. [1.x] save fait une boucle infinie.
    Par CaraG33k dans le forum Symfony
    Réponses: 4
    Dernier message: 12/07/2011, 18h17
  4. Réponses: 6
    Dernier message: 15/11/2010, 09h47
  5. Aide sur une boucle infinie
    Par willyol3 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/03/2010, 09h47

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