Associé un N° avec un nom

Bonjour

La demande est dans le titre voir le fichier joint avec explications

Merci pour votre aide

Bonjour

Un essai à tester. Te convient-i ?

10classeur1-v1.xlsm (42.30 Ko)
Option Explicit

Dim tablo As Range
Dim nom$, nomI$

Private Sub Worksheet_Change(ByVal Target As Range)

    Set tablo = Range("B1").CurrentRegion
    If Not Intersect(Target, tablo) Is Nothing _
            And (Target.Column = 3 Or Target.Column = 5 _
            Or Target.Column = 7 Or Target.Column = 9) Then
        Application.EnableEvents = False
        nom = Target.Value
        If Target.Value = "" Then GoTo fin
        Application.Undo
        nomI = ActiveCell.Value
        If nomI <> "" Then GoTo fin
        Target.Value = Target.Offset(0, -1) & " " & nom
    End If
fin:
    Application.EnableEvents = True
End Sub

Bye !

Bonjour gmb

Merci pour ta réponse

C'est génial exactement ce qu'il me fallait

Bonne fin de journée

gmb Je reviens sur le sujet ton code ,avec le code qu'il y a sur ma feuille originale ça beug

Comment associer les 2?

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Range("C2:I65"), Target) Is Nothing And Target <> "" Then
Application.EnableEvents = False
Target = Application.Proper(Target)
Application.EnableEvents = True
End If
End Sub

Tu ne dois pas mettre ce code dans un module mais dans la feuille VBA attachée à la feuille de ton tableau.

  • Copie le code que j’ai joint à mon dernier message
  • Active ton tableau (sur mon fichier, c’etaitt la feuille ‘’Inscription
  • Fais un clic droit sur le nom de l’onglet de cette feuille
  • Sélectionne ‘’Visualiser le code’’
  • La feuille VBA attachée à cet onglet apparait
  • Colle le code précedemment copié
  • Active la feuille du tableau
  • Enregisitre

C’est tout et ça devrait marcher.

Dans le cas contraire, joins ton ‘’vrai ‘’ fichier.

Bye !

C'est ce que j'ai fait j'ai mis dans la feuille Inscriptions

le problème c'est que dans cette feuille il y a déjà un code pour avoir la première lettre en majuscule avec un Private Sub_Change

et c'est là qu'il y a conflit 2 Private Sub

Une solution peut etre dans ton code rajouter une ligne qui puisse me mettre l'initiale du nom en majuscule

et je supprime mon code

Bonsoir Joco7915, gmb,

Je me permets de te répondre concernant la première lettre en majuscule sur le code de @gmb

Modifie cette ligne de code

Target.Value = Target.Offset(0, -1) & " " & nom

Par:

Target.Value = Target.Offset(0, -1) & " " & Application.WorksheetFunction.Proper(nom)

Cordialement.

Bonjour,

Je sais bien que la mode actuelle est de prendre le contre pied de ce qui est communément admis depuis des siècles... Ma fois, si tu y trouves ton compte, ça ne m'empêchera pas de dormir !

Mébon, s'agissant de liste d'inscription, la méthode usuelle était jusqu'à présent la méthode inverse : On inscrit les gens dans une base de données. Après libre à l'utilisateur de présenter ses feuilles de travail de la manière la plus ergonomique en fonction du besoin...

La base de donnée étant établie, un simple RECHERCHEV convient alors dans la plupart des situations.

Bon je vais encore me faire traiter de ... sur ce coup !

A+

Bonjour mdo100

Merci pour ton aide

Tu as la bonne solution.

Bonne journée

Hello Joco7915,

Merci pour ton retour, cependant tout le mérite revient à @gmb qui à fait le code, je n'ais pas fait grand chose.

Cdlt.

Re bonjour

Tout à fait d'accord avec toi ,pour la réalisation de gmb.

Tu as tout de même participé.

J'ai toujours quelques soucis de code je joins l'original du fichier si vous pouvez me dire ce qui cloche.

Explication dans le fichier joins

5classeur2.xlsm (42.69 Ko)

Bonjour à tous

Nouvelle version.

2classeur2-v3.xlsm (46.26 Ko)

Bye !

Bonjour gmb

merci pour ton aide

la nouvelle version OK pour la date qui se mettait a la place du prénom marc

Toujours le problème quand je supprime tous les noms des colonnes

j'ai toujours un beug sur cette ligne nom = Target.Value

Bonjour gmb,

De mon côté le code est fonctionnel quand on supprime tous les noms des colonnes.

Toutefois je ne comprends pas l'instruction:
Application.Undo

Je trouve dans Microsoft doc "Cette méthode annule la dernière opération commandée à partir de l'interface utilisateur."

Mais si je mets une apostrophe devant cette instruction, le code fonctionne quand même.

Aurais-tu la gentillesse de m'en dire plus ?

Merci.

Bonjour gmb

merci pour ton aide

la nouvelle version OK pour la date qui se mettait a la place du prénom marc

Toujours le problème quand je supprime tous les noms des colonnes

j'ai toujours un beug sur cette ligne nom = Target.Value

Re Joco7915,

Essai de mettre cette ligne de code au dessus.

On Error Resume Next
nom = Target.Value

Cdlt.

@ mdo100

L’instruction ‘’Application.undo’’ permet de remettre la feuille de calcul dans l’état où elle était avant la dernière instruction qui l’a modifiée.

Dans le cas présent,

  • on met dans une variable la valeur de la cellule target : nom
  • on applique l’instruction Undo
  • on met dans une autre variable l’ancienne valeur de la cellule target : nom I (i pour initial)
  • on compare nom et nomI
  • si nomI était vide, on met dans target lenuméro de la colonne voisine et on lui ajoute le nouveau nom
  • si le nom n’était pas vide, on remet le même nom dans la cellule
  • Cela évite, si on revalide une cellule qui a déjà un nom de modifier bizarement ce nom

OK ?

@ Joco7915

Désolé mais je n'ai pas de beug si je supprime (ou efface) plusieurs cellules d'une colonne :

Juste avant de cliquer sur la touche "Suppr" j'ai

juse vant suppression

Et juste après avoir appuyé sur la touche "Suppr" j'obtiens :

juste apres le clic sur suppr

Bye !

re bonjour

avec la solution de mdo100 je n'ai plus de problème.

Merci à tous les 2 de m'avoir aidé.

Cordialement

Re gmb,

Merci d'avoir pris le temps pour l'explication de l’instruction ‘’Application.undo’’

En re-testant avec et sans cette instruction et ton explication je viens de comprendre.

Dû coup cela protège sur les erreurs de frappe sur les cellules déjà remplient, mais ça oblige à supprimer le contenu si on veut change de valeur dans une cellule.

Parfait, merci encore pour la pédagogie.

Cdlt.

Rechercher des sujets similaires à "associe nom"