XL 2010 Incompatibilité VBA doublon + intuitive combobox

Nylream

XLDnaute Junior
Bonjour à tous,

Je rencontre un problème avec deux VBA qui se bouscule.
L'un ayant pour charge de m'éviter les doublons, l'autre d'éviter les erreurs de saisies
Chaque VBA fonctionne indépendamment, mais visiblement mal / pas ensemble.

J'ai besoin des deux fonctions, mais peut être que le code vérifiant les doublons pourrait ne s'activer soit que par bouton, soit que lors qu'on change de cellule ?

J'ai découvert les VBA il y a 4 jours, et j'avoue que je suis complétement perdu dans le code.

Merci d'avance pour votre aide
 

Pièces jointes

  • Test_1-doublon.xlsm
    72.9 KB · Affichages: 27
  • Test_2-intuitive.xlsm
    90.7 KB · Affichages: 23
  • test_3-doublon + intuitive.xlsm
    99.3 KB · Affichages: 23

Nylream

XLDnaute Junior
Petit update
Le code permettant de repérer les doublons répartis sur plusieurs feuilles et le suivants.
Il s’exécute à l'ouverture (impeccable), et à l'édition de chaque cellule situé dans les feuilles se terminant par "_Dispatch"

J'aimerais qu'il ne s'éxecute plus lors de la modification de ces feuilles, mais lorsqu'on appuie sur un bouton + a l'ouverture du fichier.
Cela devrait permettre au code de saisie intuitive de ne plus se bloquer à chaque frappe de caractère.

En espérant que quelqu'un ai la gentillesse de m'aider, car je lutte avec ça depuis plusieurs jours déjà.

Merci d'avance,


VB:
Option Explicit

Private Sub Workbook_Open()
   Rechercher
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

   On Error Resume Next: Unload UserForm1: On Error GoTo 0
   If Not Sh.Name Like "*_Dispatch*" Then Exit Sub
   Rechercher
End Sub

Sub Rechercher()
Dim Sh, T, n&, i&, j&
Dim Faux As Worksheet, auxOK As Boolean

   Application.ScreenUpdating = False
   Application.DisplayAlerts = False: On Error Resume Next
   Sheets("aux").Delete: Application.DisplayAlerts = True
   ThisWorkbook.Worksheets.Add: ActiveSheet.Name = "aux"
   auxOK = True
   On Error GoTo Err001

   For Each Sh In Worksheets
      With Sh
         If .Name Like "*_Dispatch" Then
            T = .Range("a1").CurrentRegion
            For i = 2 To UBound(T)
               For j = 2 To UBound(T, 2)
                  If Trim(T(i, j)) <> "" Then
                     n = n + 1
                     With Sheets("aux")
                        .Cells(n, 1) = T(i, j)
                        .Cells(n, 2) = Sh.Name
                        .Cells(n, 3) = Cells(i, j).Address(0, 0, xlA1)
                        .Cells(n, 4) = T(i, 1) & " / " & T(1, j)
                     End With
                  End If
               Next j
            Next i
         End If
      End With
   Next Sh

   If n > 1 Then
      With Sheets("aux").Range("a1").CurrentRegion
         .Sort .Range("a1"), xlAscending, Header:=xlNo
         .Columns(1).Offset(, 4).Formula = "=if(COUNTIF(" & .Address & ",A1)=1,1)"
         For i = .Rows.Count To 1 Step -1
            If .Cells(i, 5) = 1 Then .Rows(i).Delete xlShiftUp
         Next i
         .Columns(1).Offset(, 4).EntireColumn.Clear
      End With

      With UserForm1
         .ListBox1.List = Sheets("aux").Range("a1").CurrentRegion.Value
         .Show vbModeless
      End With
   End If
   If auxOK Then
      Application.DisplayAlerts = False
      Sheets("aux").Delete: Application.DisplayAlerts = True
   End If
   Exit Sub

Err001:
   If auxOK Then
      Application.DisplayAlerts = False
      Sheets("aux").Delete: Application.DisplayAlerts = True
   End If
End Sub
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour Nylream,

Un essai dans le fichier joint.

J'ai modifié la façon de lancer la recherche. Il faut désormais double-cliquer sur la cellule A1 des feuilles "*_Dispatch".

Le code de ThisWorkbook a été modifié. J'ai placé la macro Rechercher() dans un module à part (Module1).

nota 1 : la version v1a lance aussi la recherche quand on change de sélection sur une feuille "*_Dispatch". A vous de choisir en adaptant le code dans ThisWorkbook.
 

Pièces jointes

  • Nylream- test -doublon + intuitive- v1.xlsm
    104.5 KB · Affichages: 24
  • Nylream- test -doublon + intuitive- v1a.xlsm
    105.8 KB · Affichages: 17
Dernière édition:

Nylream

XLDnaute Junior
Bonsoir Mapomme,

La v1a est parfaite pour mon besoin, un énorme merci.

J'aurais une dernière question mais qui concerne l'autre VBA, juste au cas ou vous auriez la réponse.
Actuellement, il me permet d'afficher la liste des noms correspondant à la saisie en cours, mais rien ne m'empêche de ne pas, ou mal saisir.
Par exemple, un il est possible d'écrire "Pierre Martins" au lieu de "Pierre Martin".
Est il possible d'obliger le contenu de la cellule à matcher un des noms de la liste ?

Merci encore pour cette aide efficace.

[Edit]
Après réflexion, c'est le V1 qui sera le plus pratique à l'usage. Un double clic pour exécuter la macro est juste l'idéal.
Merci encore pour ces outils, et pour le choix donné :)
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour Nylream,

Voir l'essai dans fichier joint. J'ai modifié le code des feuilles "*_Dispatch". Le code de chaque feuille "*_Dispatch" est exactement le même. Il n'utilise plus les noms définis spécifiques à chaque feuille.

Les macros d'affichage de la ComboBox1 et de recherche des doublons n'interfèrent plus entre elles (enfin théoriquement).
 

Pièces jointes

  • Nylream- test -doublon + intuitive- v2.xlsm
    115 KB · Affichages: 43

Nylream

XLDnaute Junior
Bonjour Mapomme,

C'est absolument parfait, merci infiniment. J'arrive un peu à comprendre certaines partie du code, (pour redimensionner les cellules par exemple) :p, mais j'aurais mis des mois, ou plus certainement abandonné, sans ton aide.

Je ai encore quelques petite choses à ajouter sur ce fichier, mais le plus dur est fait je crois.

Merci encore
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 848
dernier inscrit
Djigbenou