Trouver un nom déjà existant ou créer une nouvelle ligne de saisie

Bonjour,

Je vais avoir un problème de recherche sur ma feuille puisque je vais avoir plus de 500 noms à un moment.

Je voudrais une mini boîte de dialogue située dans l'entouré violet pour entrer un nom :

- S'il existe, alors le tableau se trie de telle façon que je le retrouve la ligne de ce nom tout en haut, ceci afin que je puisse entrer ses nouvelles performances.

- Et s'il n'existe pas, alors une ligne vide se place tout en haut pour que je puisse saisir toutes les cellules.

Vous pensez que c'est faisable ?

J'en demande beaucoup, désolé et merci d'avance.

Bonne journée :-)))))))))

image

Bonjour,

En C1, saisissez le nom et cliquez n'importe où pour valider,

Cdlt

Bonjour Arturo83 et merci bcp :-)))))

Et si je tape le début du nom, puis-je avoir l'ensemble des possibilités ?

Exemple : j'ai DUPOND & DUPONT mais qd je tape "DUPON", y'a rien qui se passe.

Tu penses que c'est possible ?

Et dans le cas où le nom n'existe pas, j'ai une insertion de ligne vierge automatique au tout début, en ligne 3 ?

Merci

à + :-)))

image

Ok, remplacez la macro précédente par celle-ci:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Nouvelle, Ancienne, iR%, iC%, k%, RMax, Arr
    Dim x As Range
    Dim DerLig As Long
    If Target.Count > 1 Then GoTo Sortie

    On Error GoTo Sortie
    Application.EnableEvents = False  ' on arrête la surveillance évènementielle

    DerLig = Range("A" & Rows.Count).End(xlUp).Row
    If Target.Address = "$C$1" Then
        If Target.Value <> "" Then
            nom = Target.Value & "*"
            If Application.WorksheetFunction.CountIf(Range("A2:BM" & DerLig), nom) > 0 Then
                ActiveSheet.Range("A2:BM" & DerLig).AutoFilter Field:=3, Criteria1:="=" & nom
            Else
                Rows("3:3").Insert Shift:=xlDown
                ActiveSheet.Range("A2:BM" & DerLig).AutoFilter Field:=3
                Rows("3:3").EntireRow.AutoFit
                Range("A4:BM4").Copy
                Range("A3").PasteSpecial Paste:=xlPasteFormats
            End If
            GoTo Sortie
        End If
    ElseIf Target.CountLarge > 1 Then GoTo Sortie
    Arr = [RefCol].Value
    RMax = [CTot].End(4).Row
    iR = Target.Row
    'La macro s'exécute sur les lignes 3 à 70
    If iR < 3 Or iR > RMax Then Application.EnableEvents = False
        iC = Target.Column
        For k = 1 To UBound(Arr, 1)
            If iC = Arr(k, 1) Then
                ' on arrête la mise à jour de l'écran
                Application.ScreenUpdating = False
                'on met en mémoire la valeur de la cellule
                Nouvelle = Target.Value
                ' on applique un "UNDO" afin de connaitre la valeur de la cellule avant changement
                Application.Undo
                ' on met en mémoire l'ancienne valeur
                Ancienne = Target.Value
                ' on compare les deux valeurs
                ' si elles ne sont pas identiques alors il y a eu de changement de valeur on modifie la date
            End If
            If Nouvelle <> Ancienne Then
                Target.Value = Nouvelle
                Cells(iR, Arr(k, 2)) = Date
                Cells(iR, Arr(k, 2)).NumberFormat = "dd/mm/yy"
                Exit For
            End If
        Next
    End If

Sortie:
    Application.EnableEvents = True  ' on remet en marche la surveillance évènementielle
End Sub

Cdlt

Merci bcp Arturo83 :-))))))

Quelques petits détails :

- On devra peut-être insérer sur la ligne 4 et non sur la 3 car je perds toutes mes formules de cellules sinon ;) Et en plus y'a la mise en forme qui récupère le gras des lignes (voir image ci-dessous)

- Est-ce aussi possible, stp, d'envoyer le nouveau nom qu'on vient de taper dans cette ligne 4 directement quand elle est créée et en lettres majuscules si c'est possible.

- Et toute dernière chose, peut-on faire un "Réafficher toute la liste" dans la cellule à côté de sorte que lorsqu'un clic est fait dessus on puisse tout revoir.

J'ai beaucoup d'exigences mais c'est pour la bonne cause ;-)))

Merci d'avance à toi...

Bonne soirée

image

Bonjour,

Et toute dernière chose, peut-on faire un "Réafficher toute la liste" dans la cellule à côté de sorte que lorsqu'un clic est fait dessus on puisse tout revoir.

Pour réafficher toute la liste en cliquant dans la cellule $D$1 remplace ça

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Calculate
End Sub

Par ça

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Calculate
    If Not Intersect(Target, Me.Range("D1")) Is Nothing Then
        On Error Resume Next
        Me.AutoFilterMode = False ' Supprime tous les filtres actifs
        Me.Range("A2:BM2").AutoFilter ' Réactive les filtres sur la ligne 2
    End If
End Sub

Voir fichier

18vodoraixv2.xlsm (78.22 Ko)

Désolé Boss mais la recherche ne fonctionne plus... ;-)))))

Re
Bizarre chez moi la recherche fonctionne toujours puisque je n'ai rien modifier au code de Arturo83

J'ai juste remplacé

ça

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Calculate
End Sub

Par ça

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Calculate
    If Not Intersect(Target, Me.Range("D1")) Is Nothing Then
        On Error Resume Next
        Me.AutoFilterMode = False ' Supprime tous les filtres actifs
        Me.Range("A2:BM2").AutoFilter ' Réactive les filtres sur la ligne 2
    End If
End Sub

Slts

Bonjour,

Le fichier avec vos dernières doléances:

En cliquant sur D1 pour afficher tout l'ensemble.

Cdlt

Bonjour Arturo83 et un grand merci pour ton travail et ta patience !!!!! :-)))

C'est nickel pour les recherches et l'affichage en D1, j'ai juste 2 petits soucis :

- Malgré l'insertion d'une nouvelle ligne en ligne 4, les formules des cellules ne sont quand même pas reprises.

- Je n'ai plus les "dates perfs" dans le format jj-mm-yy qui s'affichent automatiquement quand j'entre une perf.

Et toute dernière chose, pour le masque de saisi des chronos sur un autre sujet, tu pourrais juste m'indiquer comment je l'insère dans ce nouveau code VBA ?

Encore merci beaucoup :-))))

Boss_68, désolé je ne saurais pas t'expliquer le pb avec la recherche...

Bon dimanche :-)))

J'ai aussi cette erreur parfois quand je clique dans "Réafficher..."

image

bonjour le fil,

je ne sais pas pourquoi on doit récalculer la feuille quand on change la sélection, cela me semble peu pratique.

une modification et on utilise 2 plages en plus le "tableau" et les "Disciplines" (colonnes pour les chronos)

Encore merci bcp Arturo83 : t'en peux plus de moi, avoue ! ;-)))))

Suis désolé, c'est hyper compliqué, c'est certain !!!

Quand je passe la souris ou par tabulation sur les 2 chronos des rameurs selon le format obligé, une invite m'oblige à entrer le bon format ce qui est parfait.

Mais pourrait-on entrer dans ces 2 cellules, uniquement sur un double clique. Et qd je fais annuler, en fait ça n'annule pas et ça m'oblige à entrer le bon format quand même.

Autre chose et dernière chose... sur insertion d'une nouvelle ligne pour un nouveau nom, ça me copie toutes les données de la ligne 3. Ca m'oblige à effacer toutes les données presque une par une car je ne voulais garder que le nouveau nom et rien d'autres que les cellules contenant les formules.

J'ai rajouté une colonne, la "E", "Femme" et j'ai réussi à changer toute les références aux colonnes de ton code VBA. J'étais stressé mais ouffff, je pense qu'à ce niveau là, j'ai pas échoué ! ;-)))))))

Encore mille mercis :-))))))))))

Bon appétit :-))))))))))

Super, encore merci mille fois :-))))

Laisse-moi, stp, jusqu'à ce soir pour tester plusieurs choses...

Merci

Bonne aprèm

à + :-))))))))))))))

Coucou Arturo83,

2 petites choses sinon tout est parfait !!!!!!

Est-ce que tu pourrais stp, essayer de remettre le simple clique pour la surbrillance de la ligne car depuis ta dernière màj, je dois passer par un double clique ;-)))

Merci :-)))

Dernière chose, en colonne Q et par exemple la Q3, j'ai la formule suivante : =437,8*P3*I3/(J3*J3)

Or, dès que j'insère un nouveau nom donc une nouvelle ligne et comme le J3 est à zéro (ce qui est normal puisque je n'ai pas rentré la taille du sportif), j'ai une erreur sur le calcul puisqu'on ne peut pas diviser un nombre par zéro.

Mais en même temps, la colonne "J" ne sera pas tjrs remplie pour tous les sportifs car certains ne vont pas tenter l'épreuve de traction.

Comment trouver une autre formule pour dire que si J3=0 & I3=0 alors on laisse la cellule Q3 vide, sans calcul...

Bonne soirée

Et merci pour tout :-)))))

Ah oui, j'avais oublié : quand l'invite s'affiche pour entrer les perfs des rameurs en 00:00,00, si je clique sur "Annuler" ça m'écrase quand même la valeur alors que je préférerai que ça annule vraiment et que les valeurs déjà présentes, soient tjrs affichées ;-)))))

Bonjour,

Voilà le fichier avec toutes les modifications demandées.

Cdlt

Bonjour Arturo83, c'est absolument parfait, merci beaucoup :-)))))))))))))))

Y'a juste un âge qui s'incrémente quand on ajoute un nouveau nom :

image
Rechercher des sujets similaires à "trouver nom deja existant creer nouvelle ligne saisie"