XL 2019 test valeur dans cellule pour base de données

pat66

XLDnaute Impliqué
Bonsoir le forum;
Je souhaite à partir de la feuille "coordonnees" pouvoir tester dans un tableau situé sur la feuille "BDD" soit si la valeur (exemple le nom) est déjà présente et la macro met à jour la ligne de la valeur recherchée (feuilleBDD), soit elle n'est pas présente alors la macro ajoute une ligne avec tous les renseignements du formulaire

merci d'avance pour votre aide

Pat66
 

Pièces jointes

  • Classeur1 (1).xlsm
    25.9 KB · Affichages: 25

Jacky67

XLDnaute Barbatruc
Bonsoir le forum;
Je souhaite à partir de la feuille "coordonnees" pouvoir tester dans un tableau situé sur la feuille "BDD" soit si la valeur (exemple le nom) est déjà présente et la macro met à jour la ligne de la valeur recherchée (feuilleBDD), soit elle n'est pas présente alors la macro ajoute une ligne avec tous les renseignements du formulaire

merci d'avance pour votre aide

Pat66
Bonjour,
Cela pourrait ressembler à ceci
En début de macro
Dans l'exmple, le contrôle se fait uniquement sur le nom de Monsieur

VB:
Sub Ajoute() 'PL
Dim Ligne As Integer
If IsNumeric(Application.Match(Feuil1.[c6], Feuil4.[b:b], 0)) Then MsgBox Feuil1.[c6] & vbLf & "Déjà incrit.", , "Information": Exit Sub
With Sheets("BDD")
Ligne = .Range("A65536").End(xlUp).Row + 1
'----------
'------
'--'
 

pat66

XLDnaute Impliqué
Bonjour le fil
Bonjour Jacky
merci pour votre aide, en l'état on sort de la macro si le nom est déjà présent, mais je souhaiterai que si le nom est déjà présent, elle mette a jour les données de la ligne dans BDD, soit il n'est pas présent alors il ajoute une ligne avec les données

merci
 

Jacky67

XLDnaute Barbatruc
Bonjour le fil
Bonjour Jacky
merci pour votre aide, en l'état on sort de la macro si le nom est déjà présent, mais je souhaiterai que si le nom est déjà présent, elle mette a jour les données de la ligne dans BDD, soit il n'est pas présent alors il ajoute une ligne avec les données

merci
RE...
Comme ceci peut-être :)
VB:
Sub Ajoute()    'PL
    Dim Ligne As Integer
    With Sheets("BDD")
        Ligne = .Cells.Find("*", , , , xlByRows, xlPrevious).Row + 1
        If IsNumeric(Application.Match(Feuil1.[c6], .[b:b], 0)) Then Ligne = Application.Match(Feuil1.[c6], .[b:b], 0)
        '------------
        '------
        '---
 
Dernière édition:

pat66

XLDnaute Impliqué
Bonjour je forum
Bonjour Jacky

Merci cela fonctionne bien, peut on ajouter un msgbox qui constate que :
- soit le nom existe déjà, alors msgbox ="Souhaitez vous mettre à jour les données" "ok" pour oui ou "non" pour annuler les modifications et on sort de la macro ?
- soit le contact n'existe pas, alors le msgbox indique que le nouveau contact à été enregistré

Sub Ajoute() 'PL
Dim Ligne As Integer
With Sheets("BDD")
Ligne = .Cells.Find("*", , , , xlByRows, xlPrevious).Row + 1
If IsNumeric(Application.Match(Feuil1.[c6], .[b:b], 0)) Then Ligne = Application.Match(Feuil1.[c6], .[b:b], 0)
.Cells(Ligne, 1) = Sheets("coordonnees").Cells(4, 2).Value
.Cells(Ligne, 2) = Sheets("coordonnees").Cells(6, 3).Value
.Cells(Ligne, 3) = Sheets("coordonnees").Cells(6, 7).Value
-------------------------------
-------------------------------
end sub


merci
 
Dernière édition:

Jacky67

XLDnaute Barbatruc
Bonjour je forum
Bonjour Jacky

Merci cela fonctionne bien, peut on ajouter un msgbox qui constate que :
- soit le nom existe déjà, alors "ok" pour "Souhaitez vous mettre à jour les données" ou "annuler" pour annuler les modifications ?
- soit le contact n'existe pas , alors le msgbox indique que le nouveau contact à été enregistré

Sub Ajoute() 'PL
Dim Ligne As Integer
With Sheets("BDD")
Ligne = .Cells.Find("*", , , , xlByRows, xlPrevious).Row + 1
If IsNumeric(Application.Match(Feuil1.[c6], .[b:b], 0)) Then Ligne = Application.Match(Feuil1.[c6], .[b:b], 0)
.Cells(Ligne, 1) = Sheets("coordonnees").Cells(4, 2).Value
.Cells(Ligne, 2) = Sheets("coordonnees").Cells(6, 3).Value
.Cells(Ligne, 3) = Sheets("coordonnees").Cells(6, 7).Value
-------------------------------
-------------------------------
end sub


merci
Re...
Essaye ceci
VB:
Sub Ajoute()    'PL
    Dim Ligne As Integer
    With Sheets("BDD")
        Ligne = .Cells.Find("*", , , , xlByRows, xlPrevious).Row + 1
        If IsNumeric(Application.Match(Feuil1.[c6], .[b:b], 0)) Then
            If MsgBox(Feuil1.[c6] & ",  Ce nom existe déjà." & vbLf & "Voulez-vous le modifier?", 292, "Information") = 7 Then Exit Sub
            Ligne = Application.Match(Feuil1.[c6], .[b:b], 0)
        End If
        '------------
        '------
        '---
 

pat66

XLDnaute Impliqué
Merci beaucoup

et pour être complet peut on ajouter, j'ai essayé mais je n'y arrive pas:
si le contact n'existe pas, alors le msgbox s'affiche avec "souhaitez vous ajouter ce nom ?" si oui "le nouveau contact à été enregistré"

merci Jacky
 
Dernière édition:

pat66

XLDnaute Impliqué
Bonjour Le fil
Bonjour Job

Intéressant comme approche mais le double clic ne fonctionne pas tout le temps
J'ouvre le classeur je double clique, cela fonctionne, mais si je double clique après avoir ajouté un contact, il ne fonctionne plus, c'est normal ?

Job, serais ce possible qu'en écrivant le nom du contact dans C6, le formulaire affiche tous les renseignements s'affichent grâce à un bouton, car lorsque j'aurais une grande liste de contact, il faudra que j'aille chercher la ligne dans BDD

et peut être un autre bouton pour enregistrer les nouveaux contacts

merci
 
Dernière édition:

pat66

XLDnaute Impliqué
Re,

ha oui c'est nickel tout fonctionne,
Une question Job, puisqu'il envoi directement le classeur par mail, peut on faire en sorte qu'il extrait la feuille coordonnees remplie format pdf avec le nom qui est en C6 et la date du jour
Merci

Pat
 
Dernière édition:

pat66

XLDnaute Impliqué
Bonsoir le forum, Job75

Job , pourriez vous m'aider à compléter votre macro avec le double clic qui récupère les infos de BDD et remplie la feuille "coordonnes" car elle doit aussi récupérer des infos sur 2 autres feuilles "divers" "bilan" avec d'autres cellules que je complèterai

Un grand merci

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
lig = Target.Row 'variable Public
With Sheets("coordonnees")
If lig < 3 Then lig = 0: Exit Sub
Cancel = True
Application.EnableEvents = False 'désactive les évènements
.Range("B4") = Cells(lig, 1)
.Range("C6") = Trim(Cells(lig, 2))
.Range("G6") = Cells(lig, 3)
.Range("C8") = Cells(lig, 4)
.Range("C9") = Cells(lig, 5)
.Range("C10") = Cells(lig, 6)
.Range("C11") = Cells(lig, 7)
.Range("G8") = Cells(lig, 8)
.Range("C12") = "=HYPERLINK(""mailto:" & Cells(lig, 9) & """,""" & Cells(lig, 9) & """)"
.Range("C13") = Cells(lig, 10)
.Range("G9") = Cells(lig, 11)
.Range("C14") = Cells(lig, 12)
.Range("G10") = Cells(lig, 13)
.Range("F16") = Cells(lig, 14)
Application.EnableEvents = True 'réactive les évènements
If FilterMode Then ShowAllData
.Activate
End With
End Sub
 
Dernière édition:

Discussions similaires

Réponses
7
Affichages
322
Réponses
18
Affichages
599

Statistiques des forums

Discussions
312 094
Messages
2 085 240
Membres
102 832
dernier inscrit
kirale