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èmes avec la Worksheet_Change


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Novembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Novembre 2015
    Messages : 3
    Par défaut Problèmes avec la Worksheet_Change
    Bonjour à tous,

    Je suis nouveau ici et dans le monde du vba. Je n'ai jamais travaillé en vba avant ces dernières semaines mais vos réponses aux différentes questions d'autres personnes ainsi que mes cours de programmation en C++ datant de l'école d'ingénieur m'ont permis de sortir un bout de code qui fonctionne pas mal...

    Je souhaite vous solliciter car mon problème dépasse largement la compréhension que j'ai du bout de mon code qui fait planter ma procédure automatique.

    Je travaille sur un tableau de gestion de projet dans lequel sont regroupés plusieurs informations. Une interface de gestion me permet de gérer les nouvelles entrées ainsi que le tri. Jusque-là pas de soucis. Chaque projet peut en être à 5 phases différentes qui sont Ao, Projet, Négo, Commande et Perdu. Lorsque je créé un nouveau projet par le biais de ma macro de gestion, la ligne entière prend une couleur définie en fonction de la valeur de la case "Etat du projet". Jusque-là, tout fonctionne aussi.

    Là où cela se corse, c'est que je souhaite lorsque je change manuellement la valeur de la case "Etat" que la couleur change aussi. J'ai réussi à le faire et cela fonctionne pas mal si ce n'est que ma première erreur (Erreur 13) apparaît dès lors que je copie colle des lignes venant d'un autre tableau. Cette erreur, je peux à la limite m'en accommoder car elle n'apparaîtra qu'à la mise en service du tableau.

    Ensuite, pour aller plus loin, j'ai crée deux autres feuilles qui sont censées recevoir par un couper coller les lignes pour lesquelles je change la valeur d'état du projet en commande ou perdu sur la feuille 1. J'espère être assez clair jusque-là.

    Si je fais cette procédure sur la dernière ligne remplie du tableau, pas de soucis, la ligne se transfère bien vers l'autre tableau. Par contre si je fais cela sur une ligne en plein milieu du tableau, elle se transfère bien mais j'obtiens une erreur 13 dès lors qu'elle est coupée du tableau de la feuille 1.

    Je lance le débogage et j'obtiens une erreur sur : "" If Target.Value = "Commande" Then ""

    Je pense comprendre l'erreur mais je suis incapable de la résoudre : Ma macro automatique compare la valeur de la case sélectionnée et agit en conséquence mais celle-ci étant coupée collée avec la ligne, la valeur de la cellule active change et fait planter la macro automatique. Je pense que ma première erreur est liée à la seconde car lors du copier coller, la valeur de la case active change aussi.

    Pourriez-vous me venir en aide ?

    Par avance merci de votre soutien !

    Cordialement.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    J'ai pas vraiment testé mais je verrai plus le code comme ceci :
    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
     
    Private Sub Worksheet_change(ByVal Target As Range)
     
        Dim rng As Range
     
        Const l As Integer = 40 'Projet
        Const m As Integer = 17 'AO
        Const n As Integer = 27 'Nego
        Const o As Integer = 10 'Commande
        Const p As Integer = 30 'Perdue
     
        If Target.Count > 1 Then Exit Sub
     
        If Target.Column = 10 Then 'sur colonne J car à priori c'est elle qui reçoit la valeur !
     
            With Target.Offset(1)
     
                .Value = Date
                .Font.Name = "Calibri"
                .Font.Size = 10
                .HorizontalAlignment = xlCenter
     
            End With
     
            With Range(Cells(Target.Row, 1), Cells(Target.Row, 13)).Interior
     
                Select Case Target.Value
     
                    Case "Commande": .ColorIndex = o
                        Rows(Target.Row).Copy Sheets("Commandes").Cells(Rows.Count, 1).End(xlUp).Offset(1)
                        Rows(Target.Row).Delete Shift:=xlUp
     
                    Case "Perdue": .ColorIndex = p
                    Case "Projet": .ColorIndex = l
                    Case "Nego": .ColorIndex = n
                    Case "Ao": .ColorIndex = m
     
                End Select
     
            End With
     
        End If
     
    End Sub
    Pour le reste, je n'ai pas regardé car tu parles que de cette proc !

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Novembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Novembre 2015
    Messages : 3
    Par défaut
    Bonjour,

    Merci pour cette réponse si rapide !

    Je viens de tester et effectivement je n'ai plus l'erreur...mais j'en ai une nouvelle qui apparaît : toutes les lignes en dessous de celle que je modifie appliquent dans la case Etat la date du jour.

    Je pense que cela vient de la partie du code suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     With Target.Offset(1)
     
                .Value = Date
                .Font.Name = "Calibri"
                .Font.Size = 10
                .HorizontalAlignment = xlCenter
    Ce que je souhaiterai c'est qu'en plus de la partie du code qui traite les couleurs (qui pour le coup fonctionne à merveille maintenant !!!), la date du jour s'incrémente dans la colonne M lorsque l'on modifie n'importe quelle case de la ligne sauf la colonne M elle même.

    Je pense que la partie du code précédent est la cause de mon soucis. Je vais aussi chercher une solution à ce problème vu que j'ai une base de code propre maintenant.

    Merci d'avance

    EDIT : PS, pas de soucis avec le reste des maccros, elles fonctionnent bien même si elles vous piquent sûrement les yeux

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Novembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Novembre 2015
    Messages : 3
    Par défaut
    Bonjour,

    J'ai résolu mon soucis de date qui se mettait sur toutes les lignes en dessous de celle qui était modifiée.

    Je vous poste mon code final pour information (si jamais cela peut aider).

    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
     
     
    Private Sub Worksheet_change(ByVal Target As Range)
     
        Dim rng As Range
     
        Const l As Integer = 40 'Projet
        Const m As Integer = 17 'AO
        Const n As Integer = 27 'Nego
        Const o As Integer = 10 'Commande
        Const p As Integer = 30 'Perdue
     
        If Target.Count > 1 Then Exit Sub
     
            If Target.Column <> 13 Then
     
                With Cells(Target.Row, 13)
                  .Value = Date
                  .Font.Name = "Calibri"
                  .Font.Size = 10
                   .HorizontalAlignment = xlCenter
                End With
     
     
             If Target.Column = 10 Then
     
                 With Range(Cells(Target.Row, 1), Cells(Target.Row, 13)).Interior
     
                 Select Case Target.Value
     
                    Case "Commande": .ColorIndex = o
                        Rows(Target.Row).Copy Sheets("Commandes").Cells(Rows.Count, 1).End(xlUp).Offset(1)
                        Rows(Target.Row).Delete Shift:=xlUp
                    Case "Perdue": .ColorIndex = p
                        Rows(Target.Row).Copy Sheets("Perdues").Cells(Rows.Count, 1).End(xlUp).Offset(1)
                        Rows(Target.Row).Delete Shift:=xlUp
                    Case "Perdue": .ColorIndex = p
                    Case "Projet": .ColorIndex = l
                    Case "Nego": .ColorIndex = n
                    Case "Ao": .ColorIndex = m
     
                End Select
     
                End With
     
            End If
     
        End If
     
    End Sub
    Merci beaucoup pour votre aide !!!

    A bientôt.

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

Discussions similaires

  1. [XL-2003] Problème avec une Worksheet_Change
    Par sylviobarca dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 19/04/2011, 08h53
  2. Problème avec Worksheet_Change
    Par athos7776 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 02/04/2011, 15h21
  3. Problème avec Worksheet_Change
    Par Le POlonais dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/12/2007, 09h54
  4. Réponses: 8
    Dernier message: 01/09/2007, 21h20
  5. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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