XL 2010 Pas de doublon

Myst

XLDnaute Occasionnel
Bonjour le forum
J'aurais besoins de vos service pour résoudre un problème
Je voudrais ne pas pouvoir créer une ligne supplémentaire si elle existe déjà
Exemple : Je clique sur le "NON" de la ligne 18 en (K:18), l'Userform1 s'ouvre avec le chiffre de la colonne "A" dans le Textbox1 et celui de la colonne "B" dans le Textbox2, après avoir cliqué sur le boutton valider le chiffre du Textbox1 va remplir la dernière cellule vide de la colonne "A" et le Textbox2 + la valeur du Textbox3 va remplir la dernière cellule vide en colonne "B" mais rien n'empêche la création de doublons ,la ligne 20 est ainsi identique a la ligne 19 dans le fichier joint
Je voudrais interdire les doublons et faire en sort que cela tienne compte du chiffre le plus élevé par rapport a l'association des colonne A et B, c'est a dire que si j'ai 10 dans la colonne "A" je vérifie le chiffre correspondant de la colonne "B" et j'ajoute (1)
j'espère avoir été clair dans m'a demande, pas simple a détailler
merci
 

Pièces jointes

  • essai .xlsm
    21.3 KB · Affichages: 33

Myst

XLDnaute Occasionnel
Bonjour le forum
je relance le sujet car après avoir testé dans le fichier final, le fonctionnement de l'ensemble n'est pas ce que je voulais. La solution proposé par vgendron arrive au résultat souhaité mais n'y aurait il pas une solution sans passer par une formule matricielle, directement par code VB ?
merci
 

Myst

XLDnaute Occasionnel
Bonjour vgendron
J'ai retiré le fichier du poste précédent et l'ai remis dans celui ci après correction
En fait je voudrais pouvoir procéder comme pour la cellule "A1" qui s'actualise a l'ouverture de l'Userform "FICHER"
 

vgendron

XLDnaute Barbatruc
bon en fait.. dans ton fichier. pas grand chose ne fonctionne.. n'est ce pas?

le .show 0 est devenu un .show.O (zero remplacé par la lettre O..)
ensuite.. pour la feuille "Base de donnee"

ce code
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim lig As Long
'Worksheets("Base de donnee").Protect UserInterfaceOnly:=True
If Target.Count = 1 And Target.Column = Range("J3").Column And Target(1, 1) = "NON" Then
    With MODIF_FICHE
      .TextBox1 = Target.Offset(0, -8)
      .TextBox2 = Target.Offset(0, -7)
      .ComboBox1 = Target.Offset(0, -6)
      .TextBox3 = Target.Offset(0, -5)
      .TextBox4 = Target.Offset(0, -4)
      .TextBox5 = Target.Offset(0, -3)
      .TextBox6 = Target.Offset(0, -2)
      .TextBox7 = Target.Offset(0, -1)
      .TextBox8 = Target.Offset(0, 0)
      .Tag = Target.Row
      .Show 0
    End With
End If
'If Target.Count = 1 And Target.Column = Range("J3").Column And Target(1, 1) = "OUI" Then
'    With MODIF_FICHE
'      .TextBox1 = Target.Offset(0, -8)
'      .TextBox2 = Target.Offset(0, -7)
'      .ComboBox1 = Target.Offset(0, -6)
'      .TextBox3 = Target.Offset(0, -5)
'      .TextBox4 = Target.Offset(0, -4)
'      .TextBox5 = Target.Offset(0, -3)
'      .TextBox6 = Target.Offset(0, -2)
'      .TextBox7 = Target.Offset(0, -1)
'      .TextBox8 = Target.Offset(0, 0)
'      .Tag = Target.Row
'      .Show 0
'    End With
'End If

End Sub

que ce soit OUI ou NON.. on fait la meme chose.. donc pourquoi distinguer?
en plus. je ne comprend pas la notation "Target(1,1)" pour dire target..
et Target(1-8) pour dire offset(0,-8)

et ta valeur en A1 est mise à jour automatiquement me semble t il..

Ensuite, dans ton fichier. il manque toujours des formulaires..
MODULE_DE_RECHERCHE et Apercu..
 

Myst

XLDnaute Occasionnel
Re
En fait j'ai supprimé pas mal de chose pour alléger le fichier avant de le mettre en ligne
Le .show 0 a été rectifié et j'ai nettoyé un peu plus le reste
Pour le code du "OUI" et "NON" si je ne garde que la première partie avec le "NON" l'Userform "MODIF_FICHE" ne s'ouvre plus si je clique sur un "OUI" dans la colonne "J", je dois pouvoir avoir les deux choix
 

Pièces jointes

  • ESSAI 6.xlsm
    74 KB · Affichages: 27

vgendron

XLDnaute Barbatruc
Bon. j'ai l'impression qu'il y a pas mal de chose à rectifier ...

pour le Userform "Modif Fiche"
je me suis permis des modifs
un point important que j'ai noté.
à chaque fois que tu veux "fermer" le userform, tu utilises NomUserform.hide
attention.. ca ne le ferme pas. ca le masque seulement. et il reste donc chargé en mémoire
pour le fermer il faut utiliser unload NomUserform

la feuille "Resultat" est absente du fichier.

pour l'histoire du test "NON ou OUI"
pour etre sur de lancer le code que ce soit OUI ou NON, il suffit de ne pas tester le contenu..
If Target.Count = 1 And Target.Column = Range("J3").Column And Target(1, 1) = "NON" Then

devient
If Target.Count = 1 And Target.Column = Range("J3").Column Then
 

Pièces jointes

  • ESSAI 7.xlsm
    59.9 KB · Affichages: 28
Dernière édition:

vgendron

XLDnaute Barbatruc
bah oui.
ahh.. tu veux que l'USF ne se lance QUE si tu cliques dans la colonne J ET que la cellule fasse partie du tableau rempli.. ??

dans ce cas. il te faut juste l'info de la dernière ligne
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim lig As Integer
With Sheets("Base de donnee")
    lig = .Range("A" & .Rows.Count).End(xlUp).Row
End With
'Worksheets("Base de donnee").Protect UserInterfaceOnly:=True
If Target.Count = 1 And Target.Column = Range("J3").Column And Target.Row <= lig Then
    With MODIF_FICHE
      .TextBox1 = Target.Offset(0, -9)
      .TextBox2 = Target.Offset(0, -8)
      .ComboBox1 = Target.Offset(0, -7)
      .TextBox3 = Target.Offset(0, -6)
      .TextBox4 = Target.Offset(0, -5)
      .TextBox5 = Target.Offset(0, -4)
      .TextBox6 = Target.Offset(0, -3)
      .TextBox7 = Target.Offset(0, -2)
      .TextBox8 = Target.Offset(0, -1)
      .Tag = Target.Row
      .Show 0
    End With
End If
End Sub
 

Discussions similaires

Réponses
2
Affichages
312
Réponses
8
Affichages
404

Statistiques des forums

Discussions
311 724
Messages
2 081 936
Membres
101 844
dernier inscrit
pktla