Insertion auto d'1 ligne contenant une donnée nouvelle

Bonjour Forum,

Je gère de grandes listes, dans lesquelles j’ajoute et je retire des lignes en permanence.

Parmi les données, certaines reviennent très souvent (comme, dans le fichier joint, des noms de ville).

Pour profiter à plein de la saisie semi-automatique dans Excel, j’ai créé des lignes (masquées mais ici affichées sur fond orange) dans lesquelles j’ai inscrit le nom de villes qui ont déjà figuré dans ma liste.

Du coup, quand j’insère une nouvelle ligne, si la ville que je dois y inscrire est déjà présente dans ma petite « base de données » de villes et dans la bonne colonne, je peux bénéficier de la saisie semi-automatique.

J’aimerais introduire un petit perfectionnement dans mon système, mais je ne suis pas assez balaise en VBA pour savoir le faire : ma « base de données » de villes est maintenant très fournie. Quand je crée une nouvelle ligne pour y insérer un nom de ville, c’est un peu fastidieux 1- d'afficher les lignes masquées 2-vérifier si la ville existe déjà dans la base de données et 3- de créer la ligne correspondante puis de masquer les lignes « base de données » pour 4-retourner à la ligne que je suis en train de créer.

L’idée serait que, quand j’insère dans la colonne 3 le nom d’une ville qui n’existe pas dans « base de données » (lignes sur fond orange dans le fichier joint), une nouvelle ligne se crée automatiquement dans la zone masquée, avec, dans la colonne 3, le nom de la ville que je viens d’insérer.

Quelqu’un saurait-il m’aider à faire ça ?

Merci !

93exemple.xls (14.00 Ko)

bonjour,

je ne vois pas trop bien l'utilisation de ton fichier, mais si il se gere comme un base de donnée regarde du coté de ce lien

Edit de Nad : lien supprimé.

Extrait de la charte : les liens considérés comme publicitaires sont interdits dans les messages

Construire un base de donnée en 4 chapitres.

A+

Bonsoir

Je ne vois pas à quoi te servent les lignes en orange puisque par défaut tout nouveau mot inscrit dans la colonne C sera en semi-automatique dès sa prochaine saisie.

C'est le cas d'Amiens dès que tu auras saisi AMI puisque AMSTERDAM existe déjà.

Amicalement

Nad

Merci de m'avoir répondu.

La fonction des lignes en orange est la suivante : un jour, je vais créer une ligne avec "la Chapelle-en-Vercors" dans la colonne C. Si j'efface cette ligne parce que je n'en ai plus besoin, la prochaine fois que j'aurai à créer une ligne avec "la Chapelle-en-Vercors" dans la colonne C, je devrai taper "la Chapelle-en-Vercors" in extenso.

Au contraire, si, quand j'ai créé la ligne avec la Chapelle-en-Vercors la 1ère fois, une autre ligne avec le même mot a été créée automatiquement dans la zone orange, la prochaine fois que j'aurai besoin de créer une ligne avec "la Chapelle-en-Vercors" dans la colonne C, je bénéficierai de la saisie semi-automatique, même si j'ai effacé toutes les lignes contenant "la Chapelle-en-Vercors" hors zone orange.

J'espère avoir été clair !? !

Bonsoir

Une solution complétement différente et efficace dans ce fichier.

Si tu crée une fois la Chapelle-en-Vercors, tu le retrouveras la prochaine fois. (Le code n'est pas de moi et je n'ai pas noté son auteur. Je rajouterai son nom si je le retrouve)

Cordialement

105modifiable.zip (12.81 Ko)

Aux moderateurs,

Toutes mes excuses, il y a des choses gratuites mais j'avais oublier qu'il faisait aussi de la vente et que je n'avais le droit.

Desolé

Merci pour ta réponse (et désolé d'avoir fait émerger ce problème par rapport aux règles du forum...).

Cette solution fonctionne en effet, mais le fonctionnement que j'avais imaginé (sans savoir comment le mettre en oeuvre) aurait 1 gros avantage à mes yeux : pas besoin de savoir si une ville existe déjà ou pas (surtout qu'il y en a plus d'une centaine !), il suffit de commencer à taper son nom. S'il est déjà présent dans les lignes cachées, on bénéficie de la saisie semi-auto, et sinon le nom s'ajoute tout seul à la liste cachée, pour une prochaine fois.

J'imagine qu'il faudrait trouver un moyen de détecter si le nom entré dans une cellule de la colonne C est déjà présent dans la liste cachée. Si non, Excel créerait une ligne avec le nouveau nom dans la colonne C...

Mais ça, je ne sais pas le faire...

Hum hum...

Je me permets d'envoyer ce petit message en espérant que ça incitera quelqu'un à m'aider dans mon petit problème.

D'avance merci !

Bonjour,

une solution

à tester

Claude

109gloub-liste.zip (15.48 Ko)
5aide-forum-1.xlsm (40.04 Ko)

Merci pour ta réponse rapide !

L'idée est pas mal, mais j'aimerais vraiment que le fonctionnement soit transparent pour l'utilisateur et surtout, qu'il n'y ait pas besoin au préalable de vérifier si une ville existe déjà ou pas (il peut y avoir plus de 400 lignes où les villes apparaissent dans le désordre). D'où l'idée d'une liste dans des lignes masquées : on tape le nom de la ville. Soit elle existe dans une ligne masquée, et on a une suggestion d'insertion automatique, soit elle n'existe pas déjà, et dès qu'on valide, hop ! une fonction en VBA enrichit la liste masquée d'une ligne supplémentaire.

Mais je ne sais pas faire...

Help !

Bonjour gloub

en espérant t'aider

cordialement

Bob

45pour-gloub.zip (9.53 Ko)

C'est EXACTEMENT ce que je voulais faire ! GENIAL ! MERCI MERCI MERCI !!!

-- Dim Mar 28, 2010 1:55 am --

En fait, il reste un micro-problème : quand j'efface le nom d'une ville dans une ligne du tableau, Excel crée une ligne cachée contenant une cellule vide.

Du coup, l'insertion automatique ne fonctionne plus complètement, du fait de la présence d'une cellule vide dans la colonne 3, parmi les lignes masquées.

Comment adapter le code pour que, quand j'efface une ville, Excel ne crée pas une nouvelle ligne ?

(je ne suis pas sûr d'avoir bien exposé mon problème....).

En tous cas, merci encore à Bob !!!

Bonjour gloub

je n'avais pas vu ce cas

en rajoutant If Target = "" Then Exit Sub ça devrait marcher

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("c3:c" & [c65000].End(xlUp).Row)) Is Nothing Then
    If Target.Count > 1 Then Exit Sub
    If Target = "" Then Exit Sub
            Ville = Target.Value
            Macro1 (Ville)
         End If
End Sub

cordialement

Bob

Merci, ça marche impec !

Je sais que le VBA, ce n'est pas de la sorcellerie, mais ça y ressemble un peu quand même.

Rechercher des sujets similaires à "insertion auto ligne contenant donnee nouvelle"