Gestion d'une série de 20 chiffres avec doublons

Bjr à tout le Forum,

J'ai à gérer une série de 20 chiffres pouvant comporter des doublons dont la gestion est l'inverse de celle proposée par excel (suppression du 1er chiffre constituant le doublon et non le second).

Cette série de 20 chiffres est évolutive avec une cellule de saisie qui va venir modifier la série initiale et celle en cours.

Le nombre de données à saisir régulièrement étant importante, je souhaiterais pouvoir automatiser cette manipulation via une macro dont la codification n'entre pas encore dans mon champs de compétence.

("Il vaut mieux 1 qui sait que 10 qui cherchent..." Ce qui n'empêche pas de chercher ).

En fichier joint l'explicatif étape par étape.

Merci par avance de votre aide.

Bonne journée.

Bonjour Fouggy

En retour ton fichier modifié. Pour une gestion automatique.

Voir note rouge sur feuille présentation.

Bonjour le fil

X Cellus, désolé, j'avais déjà fait le code, je partage également le mien à mettre dans la feuille "Présentation"

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Lig As Long
  If Not Intersect(Range("A21"), Target) Is Nothing Then
    If Target.Value = "" Then Exit Sub
    ' Sinon
    On Error Resume Next
    Lig = 0
    Lig = Range("A1:A20").Find(What:=Target, LookIn:=xlValues, LookAt:=xlWhole, _
      SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False).Row
    On Error GoTo 0
    ' Désactiver les évènements
    Application.EnableEvents = False
    ' Si doublon, on supprime le 1er
    If Lig <> 0 Then
      Range("A" & Lig).Delete Shift:=xlUp
      ' Ajouter une nouvelle cellule
      Range("A20").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    End If
    ' Vérifier si valeurs existantes
    Lig = Application.CountA(Range("A1:A20")) + 1
    ' Si la ligne est supérieure ou égale = 21
    If Lig >= 21 Then
      ' On supprime alors la première ligne
      Range("A1").Delete Shift:=xlUp
      ' Ajouter une nouvelle cellule
      Range("A20").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
      ' inscrire la valeur
      Range("A20").Value = Target.Value
    Else  ' Si ligne ok
      ' inscrire la valeur
      Range("A" & Lig).Value = Target.Value
    End If
    ' Effacer la valeur saisie
    Range("A21").ClearContents
    Range("A21").Select
    ' Réactiver les évènements
    Application.EnableEvents = True
  End If
End Sub

@+

A nouveau,

@BrunoM45,

Tu fais bien, cela apportera différents point de vues au demandeur.

Et j'en profite pour corriger le mien si Fouggy supprime un nombre dans sa cellule A21. Afin d'inclure cette possibilité et de ne pas perturber le résultat.

Yeeeppp,

Merci pour ces 2 réponses, mais elles ne fonctionnent pas !

BrunoM45, j'ai copié ta codification qui ne comporte pas de "Sub..." en ajoutant un sub avec un titre, mais rien ne se passe !

Xcellus, J'ai suivi tes consignes à la lettre :

J'ai entré le 34 et jusque-là tout va bien sur la série principale sauf qu'il n'y a pas de correspondance dans la colonne C où les doublons restent présents.

J'ai entré ensuite les chiffres 2/3/4/34 qui devaient venir compléter cette 1re série de 20 chiffres avant que la ligne 1 (comportant le "0") ne disparaisse. Or elle disparaît avant et toujours aucune correspondance dans la colonne C !

Par ailleurs et après saisie d'un chiffre suivi de la touche entrée, le curseur se positionne en "A22". La saisie d'un nouveau chiffre demande donc de revenir en position "A21" à chaque fois.

Je ne pensais pas que cette codification attendue pouvait être aussi complexe mais vous remercie encore une fois pour vos réponse.

Vos réponses ont le mérite d'exister.

Bonne Soirée à vous et à bientôt

A nouveau,

La colonne C est juste une colonne de copîe pour les tests.

Ce n'est pas cette colonne qui est modifiée.

C'est la colonne A qui subit la modification.

Il faut inscrire 34 ou tout autre nombre en cellule A21 pour que la macro se lance automatiquement.

re,

Action 1 : ouverture du fichier envoyé.

Remarque : La codification n'est pas accessible via excel/developpeur/macro. Elle est où, lol ?

Ai-je autant vieilli à ce point ?

Des modifications d'accès aux codifications ont-elles changées ? Enfin, Bref...

Action 2 : Je tape "34" en "A21" comme demandé.

Résultat : Tous les doublons sont supprimés comme demandé. On passe à une série de 16 chiffres restants sur 20 (série initiale). Oky

Action 3 : Je tape ensuite "2", en "A21", chiffre qui n'existe pas encore dans la série des 20 1ers chiffres. Il vient constituer le 17me chiffre (non doublon) de cette série initiale. Oky

Action 4 : Je tape ensuite "3", en "A21", chiffre qui n'existe pas encore dans la série des 20 1ers chiffres. Il vient constituer le 18me chiffre (non doublon) de cette série initiale. Oky

Action 5 : Je tape ensuite "4", en "A21", chiffre qui n'existe pas encore dans la série des 20 1ers chiffres. Il vient constituer le 19me chiffre (non doublon) de cette série initiale. Oky

Action 6 : Je tape ensuite "6", en "A21", chiffre qui n'existe pas encore dans la série des 20 1ers chiffres. Il vient constituer le 20me chiffre (non doublon) de cette série initiale.

Or, le "0", 1er chiffre de cette série de 20 1ers chiffres disparaît trop tôt ramenant la série initiale à 19 chiffres suite à cette dernière action. Alors que le "6" saisi n'est toujours pas un doublon dans cette série initiale.

C'est lors de l'action suivante que le chiffre de la 1re ligne doit disparaître (sauf doublon).

Et le "6" n'est toujours pas un doublon dans la série initiale proposée en exemple.

La série initiale doit toujours comporter 20 chiffres une fois les premiers doublons supprimés et résorbée par de nouveaux chiffes (non doublons).

Suite à ce constat, je ne peux conclure qu'une seule chose : je n'ai pas été suffisamment clair dans mes explications de départ que je reprends de manière globale ici :

1/- J'ai une série initiale de 20 chiffres qui peut comporter des doublons

2/- Suite à la suppression des doublons dans l'ordre demandée (suppression du 1er chiffre et non du second pour conserver la chronologie), la série initiale de 20 chiffres doit être reconstituée avant la suppression de la "ligne 1".

Si le résultat attendu est atteint, c'est du top.

Si le curseur de saisie reste sur la cellule "A21" après saisie, c'est parfait.

Si la série en colonne C est mise à jour dans le même temps que la saisie dans la cellule "A21", c'est de l'exceptionnel.

S'il n'est pas possible de répondre techniquement à cette demande, la vie reste belle...

Bonne soirée à tous

Bonjour Fouggy, BrunoM45,

Voici en retour la version 2 suite à tes récentes explications.

Remarque : La codification n'est pas accessible via excel/developpeur/macro. Elle est où, lol ?

Ai-je autant vieilli à ce point ?

Non, ton smiley n'a pas de barbe blanche...

Le code est inscrit dans celui de la feuille Présentation. Faire clic droit sur cette feuille dans l'éditeur VBA.

Bonjour à tous,
Une autre proposition !?
Cdlt.

4fouggy.xlsm (16.87 Ko)

Bonjour Fouggy

BrunoM45, j'ai copié ta codification qui ne comporte pas de "Sub..." en ajoutant un sub avec un titre, mais rien ne se passe !

C'est navrant si vous souhaitez du code et ne savez pas ou le placer, voici le fichier initial avec le code que j'avais fait (à toutes fins utiles)

Salut Jean-Eric
Si je peux me permettre ton code ne fonctionne pas comme il faut, normalement c'est ajout d'un doublon à la fin de la liste et suppression du 1er
à moins que ça est changé depuis

Re,
Bonjour BrunoM45,
J'ai une nouvelle fois lu entre les lignes !
Cdlt.

Slt à tous,

Slt BrunoM45, Slt X Cellus, Slt Jean-Eric et merci pour votre aide.

X Cellus, j'avais fini par trouver la parade pour le "bug" de la ligne 20 et où le chiffre de la ligne 1 (le "6" dans mon dernier post) disparaissait alors que la série initiale des 20 chiffres sans doublons n'était pas atteinte. Il suffisait de rentrer les 20 1ers chiffres dans leur cellule respective sans passer par la cellule "A21" et passer par cette dernière uniquement lorsque les 20 1ers chiffres sans doublons avait été saisis manuellement

Jean-Eric, dans la codification que tu proposes lorsqu'on tape un chiffre qui se veut être un doublon, elle supprime les 2 alors qu'il faut garder le dernier en ne supprimant que le premier

BrunoM45, ta codification est au top... Et donc un merci particulier

J'accède désormais à ta codification "macro1" qui apparaît en passant par développeur/Afficher les macros qu'il m'est, dès lors, loisible d'analyser afin d'essayer d'y comprendre quelque chose et d'éviter de déranger un forum lorsque je peux modifier le code tout seul. Avec, qui plus est, les explications précieuses "en vert" que tout le monde ne met pas forcément et malheureusement.

A mon humble niveau, je suis capable de modifier ta codification (après l'avoir trouvée ) pour faire passer la série de chiffres initiale de 20 à 15 ou 25, de modifier la cellule de saisie en conséquence, de modifier la ligne à supprimer... Même si ce n'est absolument pas à l'ordre du jour.

Ceci étant dit, je n'étais pas certain que ma demande soit réalisable en si peu de temps et souhaiterais la compléter de manière définitive avant de clore ce fil.

Je ne sais si cette dernière option est réalisable et vous la présente :

Sous forme de récapitulatif : On a dit qu'une fois que les 20 1ers chiffres de la série initiale (en colonne A) sont renseignés et ne comportent pas ou plus de doublons après le lancement de la macro, il n'y avait que 2 options :

* Cas 1 : Soit le 21me chiffre entré dans la cellule "A21" constitue un doublon et auquel cas il vient compléter la liste des 20 1ers chiffres APRES suppression du 1er chiffre constituant le doublon (la série passant de 20 à 19 chiffres) et en gardant la chronologie des chiffres entrés dans la série.

* Cas 2 : Soit le 21me chiffre entré dans la cellule "A21" ne constitue pas un doublon et auquel cas il vient compléter la liste des 20 1ers chiffres APRES suppression du chiffre contenu dans la ligne 1 (la série passant de 20 à 19 chiffres) et en gardant la chronologie des chiffres entrés dans la série.

Ceci est donc entendu.

L'évolution de la macro serait de faire en sorte que les chiffres supprimés en colonne A (cas1 & cas2) ne soient pas purement et simplement supprimés dans les 20 1ers chiffres de la colonne A (rien ne change à ce niveau là) mais soient aussi reportés de manière chronologique dans une autre colonne ( la "Colonne E" par exemple, la "Colonne C" étant déjà utilisée) avec un code couleur différent.

En fichier joint les résultats attendus de cette évolution qui me permettrait de gagner pas moins de 10 à 15 heures par semaine pour une étude statistique sur laquelle je me suis engagé de manière bénévole. Je sais que les codifications prennent un temps énorme mais les posts que je vous envoie prennent aussi énormément de temps pour être le plus précis et le plus compréhensible possible (06h00 pour ce dernier...).

Faisable ou pas, je n'en sais rien. Tout ce que je sais, c'est que si on ne demande pas d'aide, dans quelque domaine que ce soit, on en obtient pas.

Promis, si cette codification définitive est envisageable, je bois l'apéro à votre santé tous les soirs pendant un mois sur le temps que vous me ferez économiser.

Et si ce n'est pas possible, la vie reste encore très belle.

Belle journée de fin de WE à vous

Bonjour à tous,

@Fouggy, merci pour votre retour, vous me voyez rassuré
je me disais, je commence vraiment à vieillir et je ne comprends plus rien

Sinon, oui j'aime commenter les codes que je mets ici pour que justement tout le monde puisse comprendre ma logique

Voici donc l'évolution du fichier qui semble bien faire ce que vous souhaitez

bonne fin de week-end également

@+

Yeeeeeeeeeeeeppppppppppppppppp,

@BrunoM45,

Le résultat attendu frôle la perfection à deux choses prêt :

* Le code couleur dans le report en "Colonne E" des chiffres éliminés en "Colonne A" et reportés en "Colonne E" n'est pas respecté.

Les chiffres sont tous impeccablement reportés en "Colonne E", mais tous en gris.

Il est important qu'en "Colonne E", je puisse différencier les chiffres éliminés en "Colonne A" , par leur code couleur et... dans mon fichier explicatif, le "bleu" pour les chiffres supprimés et reportés de la "Colonne A" vers la ""Colonne E" au motif qu'ils étaient des doublons et le "orange" pour les chiffres supprimés et reportés de la "Colonne A" vers la ""Colonne E" au motif qu'ils n'étaient pas des doublons.

Ceci pour avoir un visuel des chiffres reportés en "Colonnes E" en terme d'"Ecarts" (doublons ou pas).

Je pense que cette dernière ou ultime modification dans ta codification relève du "peanuts" ou de la "cacahuète" (en français) vu toute la codification "au top" effectuée jusque-là.

* Ta codification n'apparaît plus dans la fenêtre via "développeur/afficher les macros" et il faudra que j'arrive enfin à comprendre ce tour de passe-passe... Si tu veux bien m'expliquer...

Dans l'attente d'un nouveau et dernier fichier ".xlsm" que je pourrais qualifier de "Just Perfect"... Avec possibilité d'accéder à la codification par le canal habituel "développeur/Afficher les macros" pour continuer à apprendre...

Un énorme merci par avance quoi qu'il arrive.

Bonsoir

Pour accéder au code ALT+F11

Double clic sur la 1ère feuille pour voir le code qui s'y trouve 😉

Pour les couleurs je n'ai pas fait attention, je regarderai ça dès que possible... Venom oblige 😜😂

@BrunoM45,

Merci pour cette réponse.

J'attends avec énormément d'impatience ta nouvelle codification qui tiendra compte des codes couleurs dans le projet proposé.

J'en profite de cette occasion pour dire que tu n'es pas le seul modérateur que j'ai connu depuis mon inscription sur ce site et que vous avez tous cette abnégation extraordinaire qui vous met au service des autres et qu'il s'agit de reconnaître... tout le temps...

Les "merci" formulés de quelque façon que ce soit ne seront jamais suffisant pour reconnaître votre investissement pour aider les autres à avancer et à continuer d'apprendre, sur ce site et dont je fais partie.

Bonne semaine et à bientôt peut-être...

Bonjour Fouggy,

Merci pour ton joli commentaire beaucoup ne s'en rendent même plus compte

Voici la nouvelle version qui met les couleurs souhaitées

Bleu pour les doublons, orange pour la première cellule supprimée de la liste

@+

JUST PERFECT

J'attaque les apéros à votre santé, comme promis, dès ce midi...

Belle Journée à tous.

Re,

Bonsoir à tous,

J'actualise mon fichier précédent selon les dernières demandes en soirée et nocturne.

Mais comme c'est clos ce jour . Je vais pouvoir regarder d'autres sujets.

Rechercher des sujets similaires à "gestion serie chiffres doublons"