OVH Cloud OVH Cloud

doublons complexes

8 réponses
Avatar
chris
Bonjour,
Voici le pb:

DATE N° COULEE N°LOPINS

11/01/2004 G4455 11B
11/01/2004 G4455 12D
11/01/2004 G4455 11B
ETC... ETC... ETC...
Comment lui dire dans une Private Sub Workbook_BeforeSave qu"il vérifie que
lorque le n°coulée est identique, qu'il me dise si il trouve un n° lopin
identique (genre "Attention doublons ligne X).

Par avance merci

8 réponses

Avatar
Aurélien29
Salut

Je te propose une solution un peu complexe et j'espère que ta liste est pas
trop longue.

i = 1
While Cells(i, 1) <> ""
i = i + 1
Wend
For a = 1 To i
For b = a + 1 To i
If (Cells(a, 2) = Cells(b, 2)) And (Cells(a, 3) = Cells(b, 3)) Then
MsgBox ("doublon ligne " & a & " et ligne " & b)
End If
Next b
Next a

Désolé et de rien





Bonjour,
Voici le pb:

DATE N° COULEE N°LOPINS

11/01/2004 G4455 11B
11/01/2004 G4455 12D
11/01/2004 G4455 11B
ETC... ETC... ETC...
Comment lui dire dans une Private Sub Workbook_BeforeSave qu"il vérifie que
lorque le n°coulée est identique, qu'il me dise si il trouve un n° lopin
identique (genre "Attention doublons ligne X).

Par avance merci





Avatar
chris
Pardon mais ca ne marche pas. Il me selectionne le a dans
For a = 1 To i

--
Cordialement,

Christophe REINA
Coordonnateur Pôle Tertaire - FOIX
tél:05 61 02 12 22
"Aurélien29" a écrit dans le message
de news:
Salut

Je te propose une solution un peu complexe et j'espère que ta liste est
pas

trop longue.

i = 1
While Cells(i, 1) <> ""
i = i + 1
Wend
For a = 1 To i
For b = a + 1 To i
If (Cells(a, 2) = Cells(b, 2)) And (Cells(a, 3) = Cells(b, 3))
Then

MsgBox ("doublon ligne " & a & " et ligne " & b)
End If
Next b
Next a

Désolé et de rien





Bonjour,
Voici le pb:

DATE N° COULEE N°LOPINS

11/01/2004 G4455 11B
11/01/2004 G4455 12D
11/01/2004 G4455 11B
ETC... ETC... ETC...
Comment lui dire dans une Private Sub Workbook_BeforeSave qu"il vérifie
que


lorque le n°coulée est identique, qu'il me dise si il trouve un n° lopin
identique (genre "Attention doublons ligne X).

Par avance merci







Avatar
AV
Tu pourrais utiliser une Mise En Forme Conditionnelle (MEFC)
Exemple avec
- les valeurs en A2:Cx
- les étiquettes de colonnes en A1:C1
- les plages nommées "Dates";"NumCoulées";"NumsLopins"

Sélection A2:Cx >> MEFC >> la formule est >>
=EQUIV($A2&$B2&$C2;Dates&NumCoulées&NumsLopins;0)<>LIGNE($A2)-1
format >> .etc.
Si la plage est susceptible de contenir des cellules vides, pour pas qu'elles


soient considérées comme des doublons, modifier la formule comme suit :
=($A2&$B2&$C2<>"")*(EQUIV($A2&$B2&$C2;Dates&NumCoulées&NumsLopins;0)<>LIGNE($A2)
-1)

AV


Avatar
Daniel.M
Bonjour,

Appelle la fonction suivante dans ton code. En plus d'invoquer le msgbox s'il y
a lieu, la fonction retourne VRAI ou FAUX selon qu'elle rencontre ou non des
doublons.

J'ai supposé que tes données sont en colonne A, B, C


' Retourne VRAI : S'il y a doublons
' FAUX : s'il n'y en a pas
Function VerifieDoublonsSur2Criteres() As Boolean

Dim premLigne As Long, dernLigne As Long
Dim i As Long, j As Long, res As Variant
Dim formule As String

VerifieDoublonsSur2Criteres = False
dernLigne = Cells(65536, "A").End(xlUp).Row ' à adapter
premLigne = 2 ' à adapter

For i = premLigne To dernLigne - 1
formule = "=MATCH(1,(B" & i + 1 & ":B" & dernLigne & _
"=B" & i & ")*(C" & i + 1 & ":C" & dernLigne & "=C" & i & "),0)"

res = Evaluate(formule)

If Not IsError(res) Then
MsgBox "Doublons entre les lignes " & i & " et " & _
i + res & ".", vbInformation + vbOKOnly, "Attention!"
VerifieDoublonsSur2Criteres = True
Exit For ' dès qu'on trouve un doublon, on sort de la boucle!
End If
Next i

End Function


Salutations,

Daniel M.

"chris" wrote in message
news:u0048$


Bonjour,
Voici le pb:

DATE N° COULEE N°LOPINS

11/01/2004 G4455 11B
11/01/2004 G4455 12D
11/01/2004 G4455 11B
ETC... ETC... ETC...
Comment lui dire dans une Private Sub Workbook_BeforeSave qu"il vérifie que
lorque le n°coulée est identique, qu'il me dise si il trouve un n° lopin
identique (genre "Attention doublons ligne X).

Par avance merci




Avatar
Daniel.M
Alain,

Tu pourrais utiliser une Mise En Forme Conditionnelle (MEFC)


L'effet visuel est garanti.


Sélection A2:Cx >> MEFC >> la formule est >>
=EQUIV($A2&$B2&$C2;Dates&NumCoulées&NumsLopins;0)<>LIGNE($A2)-1


Sûr de cette formule?
Je la suspecte de retourner toujours la première ligne évaluée.

Peut-être :
=SOMMEPROD(($A2Útes)*($B2=NumCoulées)*($C2=NumsLopins))>1

Avec même adaptation pour ligne vide si désirée
=ET(($A2&$B2&$C2<>""),SOMMEPROD(...)>1)

Salutations,

Daniel M.

Avatar
Daniel.M
Sélection A2:Cx >> MEFC >> la formule est >>
=EQUIV($A2&$B2&$C2;Dates&NumCoulées&NumsLopins;0)<>LIGNE($A2)-1


Sûr de cette formule?
Je la suspecte de retourner toujours la première ligne évaluée.


Oublie ça Alain, elle fonctionne très bien ta formule (en sélectionnant les
occurences qui surviennent après la première, c'est ce qui m'a dérouté).

Incompris une fois de plus ;-)

Daniel M.


Avatar
AV
Incompris une fois de plus ;-)


Achh...Et oui !
"Tu quoque, fili !"

AV ....(César dans le texte)
;-)

Avatar
Michel41
Bonjour

Une solution peut être avant BeforeSav?
Un très court programme de tri selon 3 critères
dans l'ordre : la date, la coulée, le lopin
(commandé par un WordArt) qui se termine
par une comparaison des données consécutives
en proposant la destruction de la ligne en double...

A+


"chris" a écrit dans le message de news:
u0048$


Bonjour,
Voici le pb:

DATE N° COULEE N°LOPINS

11/01/2004 G4455 11B
11/01/2004 G4455 12D
11/01/2004 G4455 11B
ETC... ETC... ETC...
Comment lui dire dans une Private Sub Workbook_BeforeSave qu"il vérifie
que
lorque le n°coulée est identique, qu'il me dise si il trouve un n° lopin
identique (genre "Attention doublons ligne X).

Par avance merci