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 :

Probleme sur MFC


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 103
    Par défaut Probleme sur MFC
    Bonjour,

    J'ai un probleme sur une MFC, voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim a As Integer
    a = 2
    While Not Cells(a, 1) = ""
        If Cells(a, 12) > 0 Then
        Range(Cells(a, 1), Cells(a, 14)).Selection.Font.ColorIndex = 3
        Else
        a = a + 1
        End If
    Wend
     
    End Sub
    J'ai un message d'erreur 438, "Proprieté ou methode non gérée par cet objet".

    Merci

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    bonsoir

    sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Cells(a, 1), Cells(a, 14)).Selection.Font.ColorIndex = 3
    il faut supprimer selection

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Cells(a, 1), Cells(a, 14)).Font.ColorIndex = 3

    bonne soirée

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 103
    Par défaut
    Ca marche mais un autre probleme apparait, dés que je modifie une cellule de la colonne 12 la petite macro part dans un cycle infernale...surement du à la boucle.
    Je pense qu'il faudrait appliquer la boucle 1 seule fois apres modification d'une cellule. Car j'ai testé la macro "seule" et elle fonctionne tres bien, mais des que je l'installe dans une worksheet c'est la boucle infernale.
    Quelqu'un à une idée???

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    Citation Envoyé par zeralium
    mais des que je l'installe dans une worksheet c'est la boucle infernale.

    Indépendamment de l'erreur corrigée : regarde mes commentaires en rouge


    Citation Envoyé par zeralium Voir le message
    Bonjour,

    J'ai un probleme sur une MFC, voici le code:
    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 a As Integer
    a = 2 'tu démarres donc à 2
    While Not Cells(a, 1) = "" ' et si ta cellule 2:1 est différente de ""
        If Cells(a, 12) > 0 Then 'et que par hasard ta cellule 2:12 > 0 
          Range(Cells(a, 1), Cells(a, 14)).Selection.Font.ColorIndex = 3
           'tu changes la couleur, OK, mais pas la valeur de a
        Else
          'mais voilà : tu n'y passes pas si 2:12 > 0 ... et donc a reste = 2 
         a = a + 1
        End If
       'et tu reviens au départ, puisque la cellule 2:1 est toujours différente de ""
       ' et ainsi à l'infini
    Wend
    
    End Sub

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    Peut tu expliquer ce que doit faire ce code car effectivement une fois lancer la boucle ne s'arrête plus

  6. #6
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonsoir, zyhack,

    laisse le analyser son propre code, réfléchir (sans même s'occuper de VBA) au déroulement de ce qu'il a écrit... et corriger l'emplacement de l'incrémentation de sa variable a ...
    Ce n'est pas du code, mais de la logique pure ...

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    Bon

    dernier essai avant d'aller au dodo

    je pense avoir compris le système alors essaye ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      Dim a As Integer
      a = 2
      While Not Cells(a, 1) = ""
        If Cells(a, 12) > 0 Then Range(Cells(a, 1), Cells(a, 14)).Font.ColorIndex = 3
        a = a + 1
      Wend
    End Sub
    la suite demain ...

  8. #8
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 103
    Par défaut
    Vous avez raison il y avait bien un bug dans ma macro, voici la meme corrigée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim a As Integer
    a = 2
    While Not Cells(a, 1) = ""
        If Cells(a, 12) > 0 Then
        Range(Cells(a, 1), Cells(a, 14)).Font.ColorIndex = 3
        End If
        a = a + 1
    Wend
    Par contre meme avec cette modif ca bug lorsque je mets le programme dans un worksheet.

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    Bonjour

    A la différence que tu fais ton IF sur trois lignes alors que je le fais sur une seule c’est le même code.

    Je viens de le retenter avec mon code et le tient, avec Worksheet_Change et Worksheet_SelectionChange.

    Résultat tous fonctionne nickel.

    Si tu peux préciser sur quel ligne, quel type d’erreur et je ne sais quoi d’autre qui permettrais de t’aider car la je ne peut plus faire grand-chose.

  10. #10
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 103
    Par défaut
    J'ai essayé avec ton code et tout fonctionne correctement...
    La difference que j'ai remarque avec mon code c'est le "End if"...je ne comprend pas trop le pourquoi du comment.
    Je te remercie pour ton aide.

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

Discussions similaires

  1. [MFC] probleme sur le destructeur
    Par sebpsi dans le forum MFC
    Réponses: 3
    Dernier message: 04/04/2008, 15h48
  2. [MFC] Probleme sur un CEdit
    Par sebpsi dans le forum MFC
    Réponses: 6
    Dernier message: 14/05/2007, 18h25
  3. [MFC] Probleme sur un combobox
    Par sebpsi dans le forum MFC
    Réponses: 3
    Dernier message: 06/05/2007, 12h02
  4. Réponses: 3
    Dernier message: 07/04/2003, 20h06
  5. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01

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