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 :

Stopper le fonctionnement des formules


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Mars 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Stopper le fonctionnement des formules
    Bonjour le Forum

    J'avais posé une question sur un autre forum, j'ai eu la réponse, mais cela n'a pas fonctionné chez moi, et je voudrai vous demander de bien vouloir m'aider à appliquer la macro pour qu'elle fonctionne.

    Le problème est J'ai un fichier plein de formules, et je cherche une macro qui va stopper le fonctionnement de toutes ces formules à une date précise, exemple le 01/07/2009.
    La réponse que j'ai eu est la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Workbook_Open()
    Dim Sh As Worksheet, Cel As Range
    For Each Sh In ActiveWorkbook.Sheets
        If Now() > DateSerial(2009, 5, 1) Then
            'remplace les formules par leur valeur
            For Each Cel In Sh.UsedRange
                If Cel.HasFormula = True Then Cel.Value = Cel.Value
            Next
        End If
    Next
    End Sub
    Mais quand je relance le fichier,pour essayer la macro, et en changeant la date du 01/07/09 par 01/05/09, le fichier plante, et je ne sais pas d'où cela provient
    Voulez-vous m'aider à résoudre ce problème

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Bonjour,
    Ta macros fonctionne normalement, tu a peut être des macros dans tes module de feuilles ?
    Si oui, essaye en mettant en début de macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Application.EnableEvents = False
    et remettre à true en fin de macros.
    A+

  3. #3
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Bonjour,
    Juste une petite remarque tu parles de 'stoper' les formules, la macro que tu montre écrase tes formules par la valeur (équivalent d'un copier/coller valeur) est-ce bien ce que tu veux, sinon ceci désactive le calcul automatique:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Now() > DateSerial(2009, 5, 1) Then Application.Calculation = xlManual
    A+
    N'oubliez pas le si votre problème est solutionné.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 242
    Points : 484
    Points
    484
    Par défaut
    Bonjour,

    Peut-être as-tu dans ton classeur des feuilles graphiques en plus des feuilles de calcul ?
    Si oui, remplace par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.Worksheets

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Mars 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Stopper le fonctionnement des formules
    Re

    Merci beaucoup mes chèrs confrères. Je veux exactement effacer toutes les formules du classeur, et les remplacer par leur valeur.
    Comme je vous ai dit, chez moi ça plante après le démarrage

    Merci à vous

    Lipadec

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Tu a regarder les 2 autres solutions ?
    et tu pourrais peut-être y répondre !
    A+

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Mars 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Stopper le fonctionnement des formules
    Re

    Je viens encore vers vous pour me dire où est l'erreur
    Quand je mets en application le code suivant que je place dans ThisWorkbook,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Workbook_Open()
    Application.EnableEvents = False
    Dim Sh As Worksheet, Cel As Range
    For Each Sh In ActiveWorkbook.Sheets
        If Now() > DateSerial(2009, 5, 1) Then Application.Calculation = xlManual
            'remplace les formules par leur valeur
            For Each Cel In Sh.UsedRange
                If Cel.HasFormula = True Then Cel.Value = Cel.Value
            Next
        End If
    Next
    Application.EnableEvents = True
    End Sub
    j'obtiens le message (End If sans bloc If)

    Où est l'erreur s'il vous plaît

    Merci

  8. #8
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Re,
    A priori tu n'as pas besoin des End If car tu as mis l'action à la suite du Then
    En fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If x=y Then y=z  '=> pas de end if
    Mais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If x=y then
       y=z
    End if
    N'oubliez pas le si votre problème est solutionné.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Mars 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Stopper le fonctionnement des formules
    Re

    Merci beaucoup, j'ai supprimé le end if, et j'ai essayé et ça a a marché
    Merci une autre fois

    Lipadec

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Mars 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Stopper le fonctionnement des formules Répondre à la discussion
    Bonjour le Forum

    Sur mon précédent message, j'avais dis que le code marchait bien, et j'ai considéré la discussion comme reglée.
    Malheureusement, quand j'ai appliqué le code avec la date que je voulais, c'est à dire à une date postérieure, le 31/08/09, le fichier plante et dans le débogage, c'est le 1er Next qui est en jaune.
    Le code c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Workbook_Open()
    Application.EnableEvents = False
    Dim Sh As Worksheet, Cel As Range
    For Each Sh In ActiveWorkbook.Sheets
    If Now() > DateSerial(2009, 8, 31) Then Application.Calculation = xlManual
    'remplace les formules par leur valeur
    For Each Cel In Sh.UsedRange
    If Cel.HasFormula = True Then Cel.Value = Cel.Value
    Next
    Next
    Application.EnableEvents = True
    End Sub
    Mais quand la date est antérieure à aujourd'hui, le 01/05/2009 par exemple, le code marche bien, et les formules se remplacent par leur valeur. Normalement, avant la date mentionnée dans dateseria, le fichier dois s'ouvrir avec ses formules et rien ne dois se passer, car nous ne sommes pas encore le 31/08/2009
    Dois-je ajouter quelque chose, ou ai-je commis une erreur?
    Eclairez-moi SVP

    Merci

    Lipadec

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 255
    Points : 325
    Points
    325
    Par défaut
    Bonsoir,

    essaie peut-être avec Date, à la place de Now (bien que normalement, cela ne devrait pas poser de soucis...)

    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
    Private Sub Workbook_Open()
    Dim Sh As Worksheet
    If Date > DateSerial(2009, 8, 31) Then
        With Application
            .EnableEvents = False
            .Calculation = xlManual
        End With
        For Each Sh In Sheets
            With Sh.Cells.SpecialCells(xlCellTypeFormulas, 23)
                .Value = .Value
            End With
        Next
    End If
    With Application
        .EnableEvents = True
        .Calculation = xlAutomatic
    End With
    End Sub

  12. #12
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    vba n'accepte pas les date négative, tu doit tester la plus petite et fair la soustraction.
    A+

  13. #13
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Bonjour,
    Le problème vient du fait que tu lance la boucle avant de vérifier la date...essaies:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Workbook_Open()
    Application.EnableEvents = False
    Dim Sh As Worksheet, Cel As Range
    If Now() > DateSerial(2009, 8, 31) Then 
        Application.Calculation = xlManual
            For Each Sh In ActiveWorkbook.Sheets
            'remplace les formules par leur valeur
                 For Each Cel In Sh.UsedRange
                          If Cel.HasFormula = True Then Cel.Value = Cel.Value
                 Next
            Next
    End if
    Application.EnableEvents = True
    End Sub
    N'oubliez pas le si votre problème est solutionné.

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Mars 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Stopper le fonctionnement des formules
    Bonjour le Forum

    Je pense que cette fois-ci ça marche bien, j'ai appliqué ce dernier code avec une date ordinateur antérieur à la date du code, et une autre fois en changeant la date de l'ordinateur par une date supérieure, et ça a marché dans les deux cas.

    Merci à tous ceux qui ont collaboré à cette discussion

    Merci le Forum

    Lipadec

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/11/2011, 19h48
  2. Fonctionnement des fichiers.
    Par phoenix440 dans le forum Autres Logiciels
    Réponses: 7
    Dernier message: 29/05/2005, 15h36
  3. Utiliser un parser pour extraire des formules
    Par EpOnYmE187 dans le forum C++
    Réponses: 2
    Dernier message: 15/03/2005, 23h55
  4. [CR 9] Utilisation des formules
    Par Joleroy dans le forum Formules
    Réponses: 9
    Dernier message: 13/09/2004, 08h11
  5. [langage] fonctionnement des Processus
    Par GMI3 dans le forum Langage
    Réponses: 3
    Dernier message: 19/09/2003, 11h12

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