XL 2013 Combobox, éviter d'insérer un doublon et ajouter sa propre saisie à la base de donnée

cyrikou

XLDnaute Occasionnel
Bonjour à tous,

L'utilisateur du formulaire, peut insérer en colonne A, un objectif de la base de données (colonne I)ou bien saisir son propre objectif.

Comment éviter la saisie ou le choix d'un doublon sur la colonne A et si le doublon n'existe pas, permettre l'ajout à la base de donnée une saisie manuelle?

Merci de votre aide future ou tout autres conseils.:cool:
 

Pièces jointes

  • test.xlsm
    26.9 KB · Affichages: 36
  • test.xlsm
    26.9 KB · Affichages: 33

cyrikou

XLDnaute Occasionnel
Re : Combobox, éviter d'insérer un doublon et ajouter sa propre saisie à la base de d

Merci Beaucoup, cela répond à ma question, je me rends compte qu'il va falloir que je me documente sur les différentes propriétés et fonctions, j'ai la logique mais pas le script! ;)

je me suis aperçu d'une chose, c'est que la plage d'insertion est limitée, là j'ai bien vu que l'on partait du bas pour repérer la première cellule non vide puis on y rajouté 1 pour insérer le contenu du ComboBox.

mais si maintenant la plage d'insertion est dynamique (1 objectif choisi = une ligne supplémentaire) et commence en A8? comment faire (pour la base de donnée pas de soucis, il n'y a rien au dessous)?

pour insérer et copier la ligne, j'y arrive sans problèmes mais le problème se pose quand je veux rechercher le doublon dans cette plage de données dynamique.
je joins juste le fichier modifié avec des couleurs (sur la feuille) mais je n'ai pas touché au code, le fichier que j'ai modifié plante plus surement qu'un chou:eek:
 

Pièces jointes

  • test (17).xlsm
    24.7 KB · Affichages: 28
  • test (17).xlsm
    24.7 KB · Affichages: 29

cyrikou

XLDnaute Occasionnel
Re : Combobox, éviter d'insérer un doublon et ajouter sa propre saisie à la base de d

Par contre j'ai remarqué que l'objectif même présent dans la base de donnée, est inséré en bas de celle-ci. N'y a t'il pas un problème de format,car la police ne semble pas être la même? Il y en a avec lesquels cela fonctionne et d'autre pas.:confused:
 
Dernière édition:

cyrikou

XLDnaute Occasionnel
Re : Combobox, éviter d'insérer un doublon et ajouter sa propre saisie à la base de d

Je crois que j'ai trouvé la solution, j'ai placé la base de donnée sur une autre feuille, c'est déjà plus propre! je pense que le problème venais du fait d'insérer des cellules en colonne A, car quand j'ai copié collé les données sur la feuille 2 de la colonne I, il manquait toute la partie correspondante aux cellules insérées dans la feuille.:confused:

Par contre je pense que l'on peut améliorer le code, car là j'active la feuille 2, puis après traitement j'active à nouveau la feuille 1, ce qui provoque un léger clignotement.
 

Pièces jointes

  • test (17) (2).xlsm
    28.1 KB · Affichages: 26
  • test (17) (2).xlsm
    28.1 KB · Affichages: 26

cyrikou

XLDnaute Occasionnel
Re : Combobox, éviter d'insérer un doublon et ajouter sa propre saisie à la base de d

Merci pour tout.
ce fichier est une démonstration, dans mon fichier de travail, il se pose juste un soucis :

la liste du combobox reste bloquée à 10, j'ai laissé la valeur à 8 et testé avec d'autre valeur mais rien n'y fait, comment augmenter la valeur du nombre de ligne de la liste du combobox?
merci d'avance
 

pierrejean

XLDnaute Barbatruc
Re : Combobox, éviter d'insérer un doublon et ajouter sa propre saisie à la base de d

re

La limite est en fait celle du nbre de lignes à afficher si elle est inférieure a Listrows
Teste en mettant Listrows a 0 et fin en A19 de feuii2
ou Listrows a 30 et toujours fin en A19
 

cyrikou

XLDnaute Occasionnel
Re : Combobox, éviter d'insérer un doublon et ajouter sa propre saisie à la base de d

Bonjour PierreJean,

j'ai essayé de tester le code dans mon fichier de travail:


Une "erreur "9" : l'indice n'appartient pas à la sélection"

Voici le code de la ligne d'erreur :
Code:
Set C = Sheets("Feuil42").Columns("A").Find(me.ComboBox1, LookIn:=xlValues, lookat:=xlPart)

par contre cela fonctionne quand j'active la feuille:

Code:
Sheets("Feuil42").Activate
Set C = ActiveSheet.Columns("E").Find(Me.ComboBox1, LookIn:=xlValues, lookat:=xlPart)
        If C Is Nothing Then
            Range("E" & Range("E" & Rows.Count).End(xlUp).Row + 1) = Me.ComboBox1
        End If
 Sheets("Domaine1").Activate

Voila, là je ne sais pas pourquoi cela ne fonctionne pas.:confused:
 

pierrejean

XLDnaute Barbatruc
Re : Combobox, éviter d'insérer un doublon et ajouter sa propre saisie à la base de d

Re

2 reflexions :
dans le 1er cas columns("A") dans le second columns("E")
dans le 1er cas le m minuscule est curieux!!!

Sans le vrai fichier ou du moins une copie sans données confidentielles il est très difficile de debuger
 

cyrikou

XLDnaute Occasionnel
Re : Combobox, éviter d'insérer un doublon et ajouter sa propre saisie à la base de d

Voici le code, il s'agit d'une suite de blocs conditionnels (selon la valeur de la cellule B2)
Code:
Private Sub CommandButton1_Click()
Dim x As Long, z As Integer, v As Integer, w As Integer, a As Integer, b As Integer, y As Integer, n As Long, ligne As Integer


'insertion feuille Domaine1

'Objectif 1

If Range("B2").Value = 1 Then
x = Range("A2").Value
        For n = x To Rows.Count
  If Range("C" & n) = "" Then
      ligne = n
      Exit For
   End If
Next
Set C = ActiveSheet.Columns("C").Find(Me.ComboBox1, LookIn:=xlValues, lookat:=xlPart)
If Not C Is Nothing Then
     MsgBox ("Objectif déjà saisi, veuillez recommencer !")
     Me.ComboBox1 = ""
Else
 Rows(ligne).Select
 Selection.Copy
 Selection.Insert Shift:=xlUp
 Range("C" & ligne).Value = ComboBox1.Value
 Range("D" & ligne).Value = TextBox0.Value
 
'stockage et vérification dans la base de donnée

 ' cela bloque ici si je mets à la place de "Activesheet" "Sheets("BDD1")" ou bien "Sheets("Feuil42")

 Sheets("BDD1").Activate
Set C = ActiveSheet.Columns("A").Find(Me.ComboBox1, LookIn:=xlValues, lookat:=xlPart)
        If C Is Nothing Then
            Range("A" & Range("A" & Rows.Count).End(xlUp).Row + 1) = ComboBox1
        End If
        
'insertion dans les résultats élèves

Sheets("RésultatsD1").Activate
Rows(ligne).Select
 Selection.Copy
 Selection.Insert Shift:=xlUp
 Range("C" & ligne).Value = ComboBox1.Value
 Range("D" & ligne).Value = TextBox0.Value
 
   'valeur de départ des lignes subalternes
 
        Range("A3").Value = Range("A3").Value + 1
        Range("A4").Value = Range("A4").Value + 1
        Range("A5").Value = Range("A5").Value + 1
        Range("A6").Value = Range("A6").Value + 1
        Range("A7").Value = Range("A7").Value + 1
        Range("A8").Value = Range("A8").Value + 1
        Range("A9").Value = Range("A9").Value + 1
        Range("A10").Value = Range("A10").Value + 1

Sheets("Domaine1").Activate
 'valeur de départ des lignes subalternes
 
        Range("A3").Value = Range("A3").Value + 1
        Range("A4").Value = Range("A4").Value + 1
        Range("A5").Value = Range("A5").Value + 1
        Range("A6").Value = Range("A6").Value + 1
        Range("A7").Value = Range("A7").Value + 1
        Range("A8").Value = Range("A8").Value + 1
        Range("A9").Value = Range("A9").Value + 1
        Range("A10").Value = Range("A10").Value + 1
  'remise à zéro
Application.CutCopyMode = False
Range("B2").Value = 0
' fermeture
Unload Me

End If
End If

'+8 blocs du même type
End Sub

J'ai donc des variables qui sont inscrites dans les feuilles.

Là je pense que la vision de mon code est plus complet:)
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Combobox, éviter d'insérer un doublon et ajouter sa propre saisie à la base de d

Re

Teste:

Set C = Sheets("BDD1").Columns("A").Find(Me.ComboBox1, LookIn:=xlValues, lookat:=xlPart)
If C Is Nothing Then
Sheets("BDD1").Range("A" & Range("A" & Rows.Count).End(xlUp).Row + 1) = ComboBox1
End If

Et reflechis
 

cyrikou

XLDnaute Occasionnel
Re : Combobox, éviter d'insérer un doublon et ajouter sa propre saisie à la base de d

Ça fonctionne et effectivement la solution était évidente, il va falloir que je m’attelle à maîtriser la console de débogage, j'ai vu sur des tutos que c'est un outil puissant.

Merci pour tout
 

Discussions similaires

Statistiques des forums

Discussions
312 316
Messages
2 087 176
Membres
103 491
dernier inscrit
bilg1