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 :

Incrémentation erronée suite à une suppression es données


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club

    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2011
    Messages : 83
    Points : 51
    Points
    51
    Billets dans le blog
    1
    Par défaut Incrémentation erronée suite à une suppression es données
    Bonjour,

    Permettez moi d'exposer cet exemple et j'espère une aide de votre part :

    Voici un exemple (montré dans le fichier joint):
    Supposant que vous avez commencé à remplir le tableau de la manière suivante:
    - ligne 8, resultat test "echec".............. cellule vide
    - ligne 10, resultat test "succes".......... valeur du numéro d'incrémentation est 0001
    - ligne 7, resultat test "succes"............. valeur du numéro d'incrémentation est 0002
    - ligne 11, resultat test "succes"............ valeur du numéro d'incrémentation est 0003
    - ligne 5, resultat test "succes"............ valeur du numéro d'incrémentation est 0004
    Jusqu'au là l'application fonctionne correctement,
    Mais supposant que vous avez remarqué une faute au niveau du tableau et qu'il faut supprimer la valeur résultat test de la ligne 7 (et peut être bien le numéro d'incrémentation dans la même ligne ), à ce niveau une erreur va survenir: par la suite le choix du valeur "succes" dans la ligne 12, provoque une duplication de la dernière valeur "0004"(dans la même année 2017),

    Que faut il faire dans ce cas pour que la nouvelle valeur s'incrémente suite à cette suppression des données ??
    Est il possible de récupérer le numéro de l'attestation supprimé (0002 dans cet exemple) et l'affecter pour une nouvelle ligne toujours dans la même année (lorsque le resultat test est "succes" ) et continuer après l'incrémentation de la même manière sans qu'il y ait de doublons dans la même année.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Je n'ouvre pas les pièces jointes, je n'ai donc pas pu voir ton code.
    Mais je suppose que l'incrément se fait en comptant le nombre de cases "succes".

    Au lieu de ça, ajoute 1 à la valeur max des incréments de l'autre colonne.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Membre du Club

    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2011
    Messages : 83
    Points : 51
    Points
    51
    Billets dans le blog
    1
    Par défaut
    Désolé j'ai pas bien compris

    Si c'est possible de m'aider sur le fichier lui même

    je suis pas un bon connaisseur d'Excel surtout lorsqu'il s'agit des formules ou code VBA,

    Notez bien le problème survient lorsque vous revenez sur une ligne pour supprimer ou changer la valeur de cellule resultat test, toute incrémentation qui se fait par la suite entraînera un doublon du dernier numéro incrémenté dans le tableau

    Voici le code d'incrémentation sur mon fichier

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim lo As ListObject, N As Double, iYear As Integer
        If Target.CountLarge > 1 Then Exit Sub
        If Not Intersect(Target, Me.ListObjects(1).ListColumns(2).DataBodyRange) Is Nothing Then
            If IsEmpty(Target.Offset(, -1)) Then Exit Sub
            Set lo = Me.ListObjects(1)
            Select Case Target.Value
                Case "succes"
                    iYear = Target.Offset(, -1)
                    N = WorksheetFunction.CountIfs _
                        (lo.ListColumns(2).DataBodyRange, "succes", _
                         lo.ListColumns(1).DataBodyRange, iYear)
                    Target.Offset(, 1) = N
                Case "echec"
                    Target.Offset(, 1) = ""
            End Select
        End If
        Set lo = Nothing
    End Sub

  4. #4
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                    N = WorksheetFunction.CountIfs _
                        (lo.ListColumns(2).DataBodyRange, "succes", _
                         lo.ListColumns(1).DataBodyRange, iYear)

    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                    N = WorksheetFunction.Max(lo.ListColumns(2).DataBodyRange)
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Membre du Club

    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2011
    Messages : 83
    Points : 51
    Points
    51
    Billets dans le blog
    1
    Par défaut
    Aucune incrémentation, toujours la valeur 0000 qui se répètent dans toutes les lignes si résultat test = succes

Discussions similaires

  1. Réponses: 7
    Dernier message: 11/08/2014, 17h55
  2. Réponses: 6
    Dernier message: 16/01/2013, 17h34
  3. [Access] Fermeture suite à une copie de données
    Par steps5ive dans le forum Access
    Réponses: 3
    Dernier message: 22/02/2008, 16h10
  4. Rafraichissemment d'un dbgrid suite à une suppression
    Par Zzapi dans le forum Bases de données
    Réponses: 0
    Dernier message: 19/08/2007, 17h01

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