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 macro [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 116
    Par défaut
    Bonjour le forum
    Suite à quelques modifications nécessaires d'un code dans workbook de mon classeur la macro 1 de ma feuille ne foctionne plus à 100%.La voici:
    Macro 1
    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cel As Range
    Dim flag As Boolean
    If Not Intersect(Target, Range("D8:E54")) Is Nothing Then 'on regarde si la modification a lieu sur la plage D8:E54
        flag = False
        For Each cel In Intersect(Target, Range("D8:E54"))
            If Cells(cel.Row, 7) > Cells(cel.Row, 6) Then 'si la cellule meme ligne colonne G > a celle colonne F
                Cells(cel.Row, 7).ClearContents 'on efface la cellule colonne G
                flag = True 'il faudra un message pour signaler la modif
            End If
        Next cel
        If flag Then
            MsgBox "Une valeur de la colonne (vendus) a été effacée suite à cette modification"
        End If
    End If
    End Sub
    Ce code ne fonctionne pas à 100% certainement à cause de ce code situé dans Workbook
    Macro 2
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    Private Sub Workbook_NewSheet(ByVal Sh As Object)
        Dim wb As Workbook, wshn As Worksheet, wsha As Worksheet, i%, d As Date
        On Error GoTo fin
        Set wb = ThisWorkbook
        'On vérifie l'existence d'une feuille nommée 'EnCours' dans le classeur.
        'Si elle existe, on affecte cette feuille à la variable feuille wsha
        'et le contenu de la cellule D5 de cette feuille à la variable d
        'puis on renomme la feuille selon d
        With wb
            For i = 1 To .Worksheets.Count
                If .Worksheets(i).Name = "EnCours" Then
                    Set wsha = .Worksheets(i)
                    d = wsha.Range("D5").Value
                    wsha.Name = Format(d, "dd-mm-yy")
                    Exit For
                End If
            Next i
        End With
     
        With Application
            .ScreenUpdating = False
            .DisplayAlerts = False
        End With
        'Ici (on est dans le code préexistant) la création de feuille étant effectuée selon la procédure normale
        'd'Excel, on utilise une procédure évènementielle (celle-ci !) déclenchée par l'évènement ajout de feuille
        'dans le classeur: on supprime la feuille ainsi créée pour lui substituer une copie de la feuille 'Modèle'
        'conservée masquée dans le classeur.
        Sh.Delete
        With Feuil1
            .Visible = True
            .Copy After:=wb.Worksheets(wb.Worksheets.Count)
            .Visible = xlSheetVeryHidden
        End With
        'On affecte l'objet feuille (copie de la feuille 'Modèle' à la variable feuille wshn
        'et on renomme cette feuille pour la retrouver plus facilement par la suite
        Set wshn = ActiveSheet
        wshn.Name = "EnCours"
        'On insère dans la nouvelle feuille une formule dans la plage D8:D54.
        'La formule: ='NomFeuillePrécédente'!J8
        'est celle insérée dans la cellule D8 de la nouvelle feuille, elle sera copiée sur l'ensemble de la plage
        'avec la ligne correspondante (9 à 54), la référence de ligne étant une référence relative.
        'NB: noter les apostrophes encadrant le nom de feuille dans la formule (formé à partir de d),
        'ces apostrophes sont inidspensables pour que la formule soit fonctionnelle.
        If d > 0 Then
            wshn.Range("D8:D54").FormulaLocal = "='" & Format(d, "dd-mm-yy") & "'!J8"
        End If
    fin:
        With Application
            .CutCopyMode = False
            .ScreenUpdating = True
            .DisplayAlerts = True
        End With
        wshn.Protect "motdepasse"
    End Sub
    Lorsque je modifie les valeurs des cellules Source ,via macro 2 ,les cellules Cible prennent les valeurs des cellules auquelles elles sont liées .Jusque là c'est bon .Le problème c'est que la macro 1 est là pour surveiller si les cellules F sont supérieures ou égales aux cellules G. Si cette condition n'est pas satisfaite,le contenu des celules G sera effacé.Justement la macro 1 ne fonctionne plus( puisq'elle n'efface pas les cellules G) sauf si on recommence la saisie manuellement.
    Que faut-il modifier dans ces codes?
    Merci d'avance

    Est-ce que quelqu'un peut jeter un coup d'oeuil svp....
    Après l'avoir lu ,je crois que mon post n'est pas très clair
    Merci de me le signaler si c'est vraiment le cas

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Bonjour,
    J'avais commencé a te répondre, mais j'ai préféré abandonné car oui cela ne me semble pas claire du tout.
    Ce que je te suggère c'est de mettre des pause au début de chaqu'une de tes macros et de les executer en mode pas a pas.

    Car la comme ca je ne comprend vraiment pas qu'elle peu être ton problème

    Surtout que tu n'explique pasvraiment ce qui ne fonctionne pas. Si vraiment tu n'arrive pas a être clair met un fichier exemple mais ca diminu le nombre de personne pret a répondre

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 116
    Par défaut
    Merci krovax
    Je te signale au passage que ton aide m'a été très précieuse pour la réalisation de mon classeur .Justement la macro 1 du post précédent m'a été donnée par toi(juin 2009).Elle m'est indispensable.Normalement,elle ne permet pas que les valeurs des cellules de G soient supérieures à celle de F.
    je joint ce ficheir exemple:
    http://cjoint.com/?mjpPHlxrky

  4. #4
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Le problème viens peut être de moi mais ca serai possible d'avoir juste le fichier excel et pas ce fichier zip?
    ps tu peux passer directement par le forum pour mettre les fichier joins c'est quand même plus pratique

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 116
    Par défaut
    Ta macro fonctionnait très bien avant que je change de code dans workbook pour mettre la macro 2 que j'ai envoyée plus haut.cette macro est aussi importante pour moi mais je ne sais comment les faire cohabiter.Au fait,je n'arrive pas à envoyer pièce jointe via le forum...( le format xlsm est invalide ) y a-t- il un truc que j'ignore sur les pj ?
    essaye de vérifier stp

  6. #6
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Enregistrer en forat de compatibilité xls ce qui resoud les problèmes et me permettra de le lire ^^

    Mais bon là on a pas avancé sur le problème, et je suis en week end ce soir.
    Est ce que tu as mis des pauses pour voir quand les macros s'execute? ce qui se passe quandtu avance en mode pas a pas, etc???

  7. #7
    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
    Par défaut
    bonjour vous deux,
    Exact, DVP n'a pas encore assimiler les fichiers xlsm, sauve ton classeur en excel xls, 'compatible 97/2003 et tu pourras le joindre.
    A+

  8. #8
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 116
    Par défaut
    voici le fichier en pj
    Fichiers attachés Fichiers attachés

  9. #9
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Bonjour
    sérieusement je ne comprend pas du tout ton problème
    j'ai pris ton fichier rajouté une feuille. Et il me rajoute une feuille vierge
    Si je travail dessus la macro worksheet change fonctionne très bien.

    Donc la il faudrait que tu explique clairement ton problème.
    Qu'elle sont les actions a faire qui pose problème car la je n'en voi aucun

  10. #10
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 116
    Par défaut
    Franchement ,tu as raison;moi aussi je commence à me perdre avec tous ces codes que je ne maitrise pas du tout.
    Le fichier que je t'ai envoyé contient les codes que j'ai dans mon classeur.J'ai oublié de te dire qu'il faut saisir la date dans D5. Ainsi lorsque tu insère une nouvelle feuille ,la feuille ou se trouve D5 se nommera selon la date saisie dans D5.Moi aussi ça me chiffonne car j'aurais aimé d'une part changer le nom de la feuille active dès que que valide la date dans D5 5et ne pas attendre l'onsertion d'une nouvelle feuille) et d'autre part ne pas avoir cette feuille vierge au cas ou j'oubliais de saisir la date dans D5.
    Je commence vraiment à me décourrager car je ne sais trop par quoi commencer.
    merci

  11. #11
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 116
    Par défaut
    Merci au forum,
    Après des recherches sur le web,j'ai trouvé la réponse à mon problème.J'ai remplacé la macro 1 par le code suivant:
    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 Worksheet_Calculate()
    Dim i%, flag As Boolean
    For i = 8 To 54
    If Me.Cells(i, 7).Value > Me.Cells(i, 6).Value Then
    Me.Cells(i, 7).ClearContents
    flag = True
    End If
    Next i
    If flag Then
    MsgBox "Une valeur de la colonne (vendus) de la feuille " _
    & Me.Name & " a été effacée suite à cette modification"
    End If
    End Sub
    Merci à tous

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

Discussions similaires

  1. Problème de macro
    Par Zorko dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/05/2007, 18h15
  2. [Macro] problème de macro
    Par pouii dans le forum IHM
    Réponses: 2
    Dernier message: 02/05/2007, 13h58
  3. [VBA]Problème de macro et de dimension.
    Par Invité dans le forum Général VBA
    Réponses: 2
    Dernier message: 26/04/2007, 11h50
  4. Problème sur macro (2 exécutions de code)
    Par Tsuna78 dans le forum Access
    Réponses: 2
    Dernier message: 19/03/2007, 20h24
  5. [VBA-E] Problème activation macro
    Par kamshaa dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/02/2007, 17h02

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