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 :

Macro pour pointage


Sujet :

Macros et VBA Excel

  1. #1
    Membre très actif
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2014
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2014
    Messages : 137
    Par défaut Macro pour pointage
    bonjour a tous
    macro pour pointage si je coche avec x une cellule m12 dans une feuille 3 sous le client momo par rapport au montant g12 (acpt) je voudrais que ça ce coche dans une autre feuille 2 sous le même nom de client du même montant et vise et versa de façon a être a jour dans les 2 feuilles pareil pour le solde et ça sur toute les lignes avec différent clients bien-sur (pourquoi les fichiers xlsm ne passe pas sur ce cite ????????)
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2012
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 564
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    L'idée est d'associer à chaque feuille(Feuil2 et Feuil3) une procédure évènementielle en ayant soin avant de déclarer deux variables booléennes destinées à empécher
    les deux procédures évènementielles de se déclencher inéfiniment l'une à la suite de l'autre.
    • Insérer un module dans l'éditeur VBE et dans ce module déclarer deux vaiables booléennes de statut Public.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Var1 As Boolean, Var2 As Boolean
    • Ecrire, dans l’espace de travail associé à Feuil2 dans le VBE, 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
    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
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Var1 = True Then Exit Sub
    ' empèche la procédure de démarrer si la procédure évènementielle sur l'autre feuille est en cours
     
        If Target.Count > 1 Then Exit Sub
    ' permet de sortir de la procédure si plus d'une cellule est sélectionnée
    ' (sinon la suite de la macro renvoie un message d'erreur)
     
        If Target.Column < 13 Or Target.Column > 14 Then Exit Sub
    ' permet de sortir de la procédure si la cellule changeant de valeur
    ' n'est pas dans l'une des colonnes M ou N
     
        If Target.Value <> "x" And Target.Value <> "X" And Target.Value <> "" Then Exit Sub
    ' permet de sortir de la procédure si l'on n'a ni effacé la cellule changeant de valeur
    ' ni écrit un x (ou X)  dans cette cellule.
     
        Var2 = True
    ' neutralise la procédure évènementielle sur l'autre feuille
     
    ' Détermination du client, de l'action pointée et du montant correspondant
        client = Cells(Target.Row, 2).Value
        actionclient = Cells(3, Target.Column).Value
        montant = Target.Offset(0, -3 + 2 * (Target.Column = 13))
     
    ' Mise à jour de l'autre feuille
        Sheets("Feuil3").Activate
        With ActiveSheet
            precell = .Range("B1").End(xlDown).Row
            dercell = .Range("B65536").End(xlUp).Row
            For i = precell To dercell
                If .Cells(i, 2).Value = client And .Cells(i, 7).Value = montant And .Cells(i, 14).Value = actionclient Then
                    .Cells(i, 13) = Target
                End If
            Next i
            .[A1].Select
        End With
     
        Var2 = False
     
    End Sub
    • Ecrire dans l’espace de travail associé à Feuil3 dans le VBE 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
    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
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        If Var2 = True Then Exit Sub
    ' empèche la procédure de démarrer si la procédure évènementielle sur l'autre feuille est en cours
     
        If Target.Count > 1 Then Exit Sub
    ' permet de sortir de la procédure si plus d'une cellule est sélectionnée
    ' (sinon la suite de la macro renvoie un message d'erreur)
     
        If Target.Column <> 13 Then Exit Sub
    ' permet de sortir de la procédure si la cellule changeant de valeur
    ' n'est pas dans la colonne M
     
        If Target.Value <> "x" And Target.Value <> "X" And Target.Value <> "" Then Exit Sub
    ' permet de sortir de la procédure si l'on n'a ni effacé la cellule changeant de valeur
    ' ni écrit un x (ou X)  dans cette cellule.
     
        Var1 = True
    ' neutralise la procédure évènementielle sur l'autre feuille
     
    ' Détermination du client, de l'action pointée et du montant correspondant
        client = Cells(Target.Row, 2).Value
        montant = Cells(Target.Row, 7).Value
        colaction = 11 + 3 * (Cells(Target.Row, 14).Value = "acpt")
        colpointage = colaction + 3 - 2 * (Cells(Target.Row, 14).Value = "acpt")
        If client = "" Or montant = "" Then Exit Sub
    '  permet de sortir de la procédure si la cellule cochée est dans la colonne M mais dans une ligne "vide"
     
    ' Mise à jour de l'autre feuille
        Sheets("Feuil2").Activate
        With ActiveSheet
            precell = .Range("B1").End(xlDown).Row
            dercell = .Range("B65536").End(xlUp).Row
            For i = precell To dercell
                If .Cells(i, 2).Value = client And .Cells(i, colaction).Value = montant Then .Cells(i, colpointage) = Target
            Next i
            .[A1].Select
        End With
     
        Var1 = False
     
    End Sub
    Ces deux procédures sont mises en oeuvre dans le classeur joint.
    Ce classeur répond aussi à la dernière interrogation. Pour envoyer un classeur au format .xslm sur le site, il faut d'abord le compresser.
    Cordialement
    Claude
    Fichiers attachés Fichiers attachés

  3. #3
    Membre très actif
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2014
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2014
    Messages : 137
    Par défaut
    salut papouclo g refais les tableaux comme sont les vrais, les emplacements sont pareil et ca doit marcher jusqu a la derniere ligne du bas 65536
    comme tu le vois les noms sont melanger ca depend des ordres de factures, le but et de mettre la X dans l autre feuille par rapport au nom et montant (acpt ou solde ) si on met la X feuille2 elle doit aussi etre en feuille 3 et vise et versa et pas besoin d allez a l autre feuille automatiquement doit reste sur la meme, le pointage devrais ce faire sur la feuille 3 mais peux aussi se faire de la feuille 2 te remerci d avance ..

    pointage bisbis.rar

  4. #4
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2012
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 564
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Voici une version légèrement modifiée dans laquelle la macro rend la main à l'exécutant non pas dans la feuille mise à jour mais dans la feuille d'origine où l'on a modifié le pointage.
    Tu verras facilement les modifications dans chacune des deux procédures.
    Un conseil : compresse tes fichiers sous le format zip même si tu emploies rar car certains peuvent ne pas l'avoir.
    Cordialement
    Claude
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [XL-2010] Macro pour calculer automatique des pointages de questionnaire?
    Par sapage6 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 07/03/2015, 12h51
  2. Complexité d'une macro pour Excel
    Par MatMeuh dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 14/04/2006, 11h23
  3. macro pour un malloc
    Par salseropom dans le forum C
    Réponses: 4
    Dernier message: 15/02/2006, 10h53
  4. macro pour splashscreen
    Par stoads dans le forum IHM
    Réponses: 20
    Dernier message: 26/11/2005, 12h33
  5. [VBA-E] [help]macro pour dupliquer une feuille (en valeur)
    Par minikisskool dans le forum Macros et VBA Excel
    Réponses: 31
    Dernier message: 07/11/2005, 19h24

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