Provence Vintage
XLDnaute Occasionnel
Comment puis-je trouver une parade!
Un Usf m'enregistre via macro données dans feuille.
1ère colonne de ma feuille "Nom"
Le hic: si on a deux fois le même Nom, et oui, ça arrive, comment forcer pour une saisie du genre, "existe déjà" ou "mettre un autre Nom" ou d'office "Nom"2
Avec le code d'origine qui enregistre dans ma feuille:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Sheets("Base de Données acheteurs").Activate
Dim NomDeFeuilEnCours$, lidep1 As Long, cellule As Range
NomDeFeuilEnCours = "Base de Données acheteurs"
Dim Ctrl As Control
Dim Valeur As String
Dim Vr As Byte, Fx As Byte
Dim Coul&
CoulRouge = 3: CoulNoir = 1
PalRouge& = &HC0&: PalNoir& = &H80000008
For Each Ctrl In Me.Controls
If TypeOf Ctrl Is MSForms.CheckBox Then
If Ctrl.Value = True Then
Valeur = Valeur & Ctrl.Name & " = True " & Chr(10)
Vr = Vr + 1
Else
Valeur = Valeur & Ctrl.Name & " =False " & Chr(10)
Fx = Fx + 1
If CréerFicheAcquéreur.TextBox9.Value = "" Then
MsgBox " Le Nom de l'acquéreur est obligatoire . "
Exit Sub
End If
End If
End If
Next
li = Range("A6000").End(xlUp).Row
li = li + IIf(li < 4, 2, 1) ' à cause des lignes fusionnées !
Cells(li, 1) = TextBox9.Value
Cells(li, 2) = TextBox10.Value
Cells(li, 2) = TextBox10.Value
Cells(li, 3) = TextBox5.Value
Cells(li, 4) = TextBox24.Value
Cells(li, 5) = TextBox25.Value
Cells(li, 6) = TextBox22.Value
Cells(li, 7) = IIf(OptionButton15, "Tous secteurs", "")
Cells(li, 16) = IIf(CheckBox1, "MDV", "") & IIf(CheckBox2, "Appart", "") & IIf(CheckBox3, "Villa", "") & IIf(CheckBox4, "Mas", "") & IIf(CheckBox5, "Terrain", "")
Cells(li, 17) = TextBox2.Value
Cells(li, 18) = IIf(CheckBox11, "Oui", "")
Cells(li, 19) = TextBox3.Value
Cells(li, 20) = TextBox4.Value
Cells(li, 21) = IIf(OptionButton1, "Oui", "")
Cells(li, 22) = IIf(OptionButton2, "Oui", "")
Cells(li, 23) = TextBox7.Value
Cells(li, 24) = TextBox8.Value
Cells(li, 25) = IIf(CheckBox6, "Oui", "")
Cells(li, 26) = IIf(CheckBox7, "Oui", "")
Cells(li, 27) = IIf(CheckBox8, "Oui", "")
Cells(li, 28) = IIf(CheckBox9, "Oui", "")
Cells(li, 29) = IIf(OptionButton11, "Cuisine US", "")
Cells(li, 29) = IIf(OptionButton10, "Cuisine séparée", "")
Cells(li, 30) = IIf(CheckBox10, "Oui", "")
Cells(li, 31) = TextBox20.Value
Cells(li, 32) = TextBox21.Value
Cells(li, 33) = IIf(CheckBox12, "Oui", "")
Cells(li, 34) = IIf(CheckBox13, "Oui", "")
Cells(li, 35) = TextBox23.Value
Cells(li, 36) = IIf(CheckBox14, "Oui", "")
Cells(li, 37) = TextBox19.Value
If ComboBox1.ForeColor = PalNoir& Then c = CoulNoir Else c = CoulRouge
Cells(li, 8).Value = ComboBox1.Value
Cells(li, 8).Font.ColorIndex = c
If ComboBox2.ForeColor = PalNoir& Then c = CoulNoir Else c = CoulRouge
Cells(li, 9).Value = ComboBox2.Value
Cells(li, 9).Font.ColorIndex = c
If ComboBox3.ForeColor = PalNoir& Then c = CoulNoir Else c = CoulRouge
Cells(li, 10).Value = ComboBox3.Value
Cells(li, 10).Font.ColorIndex = c
If ComboBox4.ForeColor = PalNoir& Then c = CoulNoir Else c = CoulRouge
Cells(li, 11).Value = ComboBox4.Value
Cells(li, 11).Font.ColorIndex = c
If ComboBox5.ForeColor = PalNoir& Then c = CoulNoir Else c = CoulRouge
Cells(li, 12).Value = ComboBox5.Value
Cells(li, 12).Font.ColorIndex = c
If ComboBox6.ForeColor = PalNoir& Then c = CoulNoir Else c = CoulRouge
Cells(li, 13).Value = ComboBox6.Value
Cells(li, 13).Font.ColorIndex = c
If ComboBox7.ForeColor = PalNoir& Then c = CoulNoir Else c = CoulRouge
Cells(li, 14).Value = ComboBox7.Value
Cells(li, 14).Font.ColorIndex = c
If ComboBox8.ForeColor = PalNoir& Then c = CoulNoir Else c = CoulRouge
Cells(li, 15).Value = ComboBox8.Value
Cells(li, 15).Font.ColorIndex = c
Call trierzonedetriacheteurs
Call calculnombrefichesacheteurs
Unload Me
Application.ScreenUpdating = True
SaisirPije.Hide
Accueil.Show
CréerFicheAcquéreur.Hide
Accueil.Show
End Sub
La plus importante étant: Cells(li, 1) = TextBox9.Value
puisque c celle qui me check le nom ds ma base de données.....
Faut'il passer par (exemple):
Etre averti lors de la saisie des doublons dans la plage A1:A5000
Procédure à placer au niveau de la feuille en utilisant l'evenement "Change"
Private Sub Worksheet_Change(byVal Target As Excel.Range)
If Target.Column = 1 Then
If Application.worksheetFunction.countIf(Range("A1:A5 000"), Target.Value) > 1 Then msgBox "ce nom existe déja"
End If
End Sub
Un Usf m'enregistre via macro données dans feuille.
1ère colonne de ma feuille "Nom"
Le hic: si on a deux fois le même Nom, et oui, ça arrive, comment forcer pour une saisie du genre, "existe déjà" ou "mettre un autre Nom" ou d'office "Nom"2
Avec le code d'origine qui enregistre dans ma feuille:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Sheets("Base de Données acheteurs").Activate
Dim NomDeFeuilEnCours$, lidep1 As Long, cellule As Range
NomDeFeuilEnCours = "Base de Données acheteurs"
Dim Ctrl As Control
Dim Valeur As String
Dim Vr As Byte, Fx As Byte
Dim Coul&
CoulRouge = 3: CoulNoir = 1
PalRouge& = &HC0&: PalNoir& = &H80000008
For Each Ctrl In Me.Controls
If TypeOf Ctrl Is MSForms.CheckBox Then
If Ctrl.Value = True Then
Valeur = Valeur & Ctrl.Name & " = True " & Chr(10)
Vr = Vr + 1
Else
Valeur = Valeur & Ctrl.Name & " =False " & Chr(10)
Fx = Fx + 1
If CréerFicheAcquéreur.TextBox9.Value = "" Then
MsgBox " Le Nom de l'acquéreur est obligatoire . "
Exit Sub
End If
End If
End If
Next
li = Range("A6000").End(xlUp).Row
li = li + IIf(li < 4, 2, 1) ' à cause des lignes fusionnées !
Cells(li, 1) = TextBox9.Value
Cells(li, 2) = TextBox10.Value
Cells(li, 2) = TextBox10.Value
Cells(li, 3) = TextBox5.Value
Cells(li, 4) = TextBox24.Value
Cells(li, 5) = TextBox25.Value
Cells(li, 6) = TextBox22.Value
Cells(li, 7) = IIf(OptionButton15, "Tous secteurs", "")
Cells(li, 16) = IIf(CheckBox1, "MDV", "") & IIf(CheckBox2, "Appart", "") & IIf(CheckBox3, "Villa", "") & IIf(CheckBox4, "Mas", "") & IIf(CheckBox5, "Terrain", "")
Cells(li, 17) = TextBox2.Value
Cells(li, 18) = IIf(CheckBox11, "Oui", "")
Cells(li, 19) = TextBox3.Value
Cells(li, 20) = TextBox4.Value
Cells(li, 21) = IIf(OptionButton1, "Oui", "")
Cells(li, 22) = IIf(OptionButton2, "Oui", "")
Cells(li, 23) = TextBox7.Value
Cells(li, 24) = TextBox8.Value
Cells(li, 25) = IIf(CheckBox6, "Oui", "")
Cells(li, 26) = IIf(CheckBox7, "Oui", "")
Cells(li, 27) = IIf(CheckBox8, "Oui", "")
Cells(li, 28) = IIf(CheckBox9, "Oui", "")
Cells(li, 29) = IIf(OptionButton11, "Cuisine US", "")
Cells(li, 29) = IIf(OptionButton10, "Cuisine séparée", "")
Cells(li, 30) = IIf(CheckBox10, "Oui", "")
Cells(li, 31) = TextBox20.Value
Cells(li, 32) = TextBox21.Value
Cells(li, 33) = IIf(CheckBox12, "Oui", "")
Cells(li, 34) = IIf(CheckBox13, "Oui", "")
Cells(li, 35) = TextBox23.Value
Cells(li, 36) = IIf(CheckBox14, "Oui", "")
Cells(li, 37) = TextBox19.Value
If ComboBox1.ForeColor = PalNoir& Then c = CoulNoir Else c = CoulRouge
Cells(li, 8).Value = ComboBox1.Value
Cells(li, 8).Font.ColorIndex = c
If ComboBox2.ForeColor = PalNoir& Then c = CoulNoir Else c = CoulRouge
Cells(li, 9).Value = ComboBox2.Value
Cells(li, 9).Font.ColorIndex = c
If ComboBox3.ForeColor = PalNoir& Then c = CoulNoir Else c = CoulRouge
Cells(li, 10).Value = ComboBox3.Value
Cells(li, 10).Font.ColorIndex = c
If ComboBox4.ForeColor = PalNoir& Then c = CoulNoir Else c = CoulRouge
Cells(li, 11).Value = ComboBox4.Value
Cells(li, 11).Font.ColorIndex = c
If ComboBox5.ForeColor = PalNoir& Then c = CoulNoir Else c = CoulRouge
Cells(li, 12).Value = ComboBox5.Value
Cells(li, 12).Font.ColorIndex = c
If ComboBox6.ForeColor = PalNoir& Then c = CoulNoir Else c = CoulRouge
Cells(li, 13).Value = ComboBox6.Value
Cells(li, 13).Font.ColorIndex = c
If ComboBox7.ForeColor = PalNoir& Then c = CoulNoir Else c = CoulRouge
Cells(li, 14).Value = ComboBox7.Value
Cells(li, 14).Font.ColorIndex = c
If ComboBox8.ForeColor = PalNoir& Then c = CoulNoir Else c = CoulRouge
Cells(li, 15).Value = ComboBox8.Value
Cells(li, 15).Font.ColorIndex = c
Call trierzonedetriacheteurs
Call calculnombrefichesacheteurs
Unload Me
Application.ScreenUpdating = True
SaisirPije.Hide
Accueil.Show
CréerFicheAcquéreur.Hide
Accueil.Show
End Sub
La plus importante étant: Cells(li, 1) = TextBox9.Value
puisque c celle qui me check le nom ds ma base de données.....
Faut'il passer par (exemple):
Etre averti lors de la saisie des doublons dans la plage A1:A5000
Procédure à placer au niveau de la feuille en utilisant l'evenement "Change"
Private Sub Worksheet_Change(byVal Target As Excel.Range)
If Target.Column = 1 Then
If Application.worksheetFunction.countIf(Range("A1:A5 000"), Target.Value) > 1 Then msgBox "ce nom existe déja"
End If
End Sub