Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/11/2011, 17h13   #1
Candidat au titre de Membre du Club
 
Homme Boris
Étudiant
Inscription : août 2011
Messages : 53
Détails du profil
Informations personnelles :
Nom : Homme Boris
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : août 2011
Messages : 53
Points : 13
Points : 13
Par défaut Empêcher saisie doublon Ligne par Ligne

Bonjour le forum,

Après plusieurs recherches, je me tourne vers votre aide...
Je souhaite empêcher la saisie du même nom 2 fois sur la même ligne sur certaines colonnes seulement. J'ai trouvé du code sur le forum qui fonctionne bien ligne par ligne mais qui prend malheureusement en compte aussi toute la colonne :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Sub Worksheet_Change(ByVal Target As Range)
 
Dim c As Range
If Target.Count > 1 Then Exit Sub
If Target.Column = 28 Or Target.Column = 30 Or Target.Column = 32 Or Target.Column = 36 Or Target.Column = 40 Or Target.Column = 44 Or Target.Column = 48 Or Target.Column = 52 Then
 If Target <> "" Then
  'On colle dans la colonne IV le contenu de la colonne C de la feuil1
 Sheets("Feuil1").Columns(3).Copy Range("IV1")
   Set c = Cells.Find(What:=Target.Text, LookIn:=xlValues, LookAt:=xlWhole)
   If Not c Is Nothing And c.Address = Target.Address Then Set c = Cells.FindNext(c)
     If c.Address <> Target.Address Then
       If c.Column = 256 Then
         MsgBox "Ce code existe déjà en feuil4!C" & c.Row: Target = ""
       Else
         MsgBox "DOUBLON": Target = ""
       End If
     End If
   End If
'puis on efface la colonne IV
 Columns(256).Delete
 End If
End Sub
J'espère avoir été clair...
un GRAND MERCI!
borisp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 18h06   #2
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
'Pas de doublons sur chaque ligne des colonne de D à G
Private Sub Worksheet_Change(ByVal Target As Range)
 
If Target.Count = 1 Then
    If Target.Value <> "" Then
        If Application.CountIf(Intersect(Target.EntireRow, Range("D:G")), Target.Value) > 1 Then
            Application.EnableEvents = False
            Application.Undo
            Application.EnableEvents = True
            MsgBox "Doublons effacé"
        End If
    End If
End If
End Sub
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 10/11/2011, 09h13   #3
Candidat au titre de Membre du Club
 
Homme Boris
Étudiant
Inscription : août 2011
Messages : 53
Détails du profil
Informations personnelles :
Nom : Homme Boris
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : août 2011
Messages : 53
Points : 13
Points : 13
Merci Mille fois c'est parfait!
borisp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2011, 10h37   #4
Responsable
Office & Excel

 
Avatar de Pierre Fauconnier
 
Homme Pierre Fauconnier
Formateur et développeur informatique indépendant
Inscription : novembre 2003
Messages : 8 199
Détails du profil
Informations personnelles :
Nom : Homme Pierre Fauconnier
Âge : 45
Localisation : Belgique

Informations professionnelles :
Activité : Formateur et développeur informatique indépendant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 8 199
Points : 14 398
Points : 14 398
Envoyer un message via Skype™ à Pierre Fauconnier
Salut.

Eventuellement, une solution sans VBA est possible, via la validation de données.

Pour appliquer cela sur la plage D:G, tu sélectionnes les colonnes D:G (avec D1 comme cellule active) et tu utilises la validation personnalisée avec la formule suivante :
Citation:
=(NB.SI($D1:$G1;D1)=1)
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------

Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP
Vous souhaitez rédiger pour DVP? Contactez-moi
Amoureux de la langue française? Venez corriger nos ressources
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
N'oubliez pas de VOTER (en bas à droite d'un message)

---------------
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation 20
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h40.


 
 
 
 
Partenaires

Hébergement Web