Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comparer plusieur cellule

2 réponses
Avatar
Michael
Bonjour a tous,

j'ai la formule suivante =SOMME(SI(NB.SI($B$67:$B$83;$H$67:$H$83)=0;1;0))

qui me compare 2 plage et qui m'indique le nombre de cellule qui son
differente.

mais le probleme c'est qu'il me fadrait une formule semblable a l'aide d'une
macro et qui peu comparer plus de 2 cellule, Car cette formule ne peu en
comparer plus de 2 :(

exemple j'ai 4 feuille

feuil1 feuil2 feuil3 feuil4
A1=1 A1=1 A1=2 A1=1
A2=2 A2=2 A2=3 A2=2

j'aimerai qu'il me compare les 4 feuilles et qui me ramene sur un autre
feuille les cellule A1 et A2 de la feuil3 car il ne son pas parreil au autre
feuilles

est-ce possible ???
merci de votre aide

2 réponses

Avatar
PMO
Bonjour,

Une piste avec le code ci-dessous à copier dans un
module standard.

'**********
Sub PMO_CompareCellules()
Dim S As Worksheet
Dim R As Range
Dim var1
Dim var2
Dim i&
Dim j&
Dim k&
Dim bool As Boolean
Dim nom1$
Dim nom2$
With ActiveWindow
If .SelectedSheets.Count = 1 Then
MsgBox "Veuillez sélectionner plusieurs feuilles." & _
vbCrLf & vbCrLf & _
"Maintenez la touche Ctrl pour ce faire."
Exit Sub
End If
On Error GoTo fin
Set R = Application.InputBox( _
prompt:="Sélectionnez une plage.", Type:=8)
For k& = 2 To .SelectedSheets.Count
bool = False
var1 = .SelectedSheets(k& - 1).Range(R.Address)
var2 = .SelectedSheets(k&).Range(R.Address)
For i& = 1 To UBound(var1, 1)
For j& = 1 To UBound(var1, 2)
If var1(i&, j&) = var2(i&, j&) Then
var1(i&, j&) = ""
var2(i&, j&) = ""
Else
nom1$ = .SelectedSheets(k& - 1).Name
nom2$ = .SelectedSheets(k&).Name
bool = True
End If
Next j&
Next i&
If bool Then
Sheets(nom1$).Select
Set S = Sheets.Add(after:=Sheets(Sheets.Count))
S.Range(R.Address) = var1
S.Name = nom1$ & "_log"
Set S = Sheets.Add
S.Range(R.Address) = var2
S.Name = nom2$ & "_log"
MsgBox "Différences constatées. Programme stoppé."
Exit Sub
End If
Next k&
End With
MsgBox "Aucune différence. Terminé."
fin:
End Sub
'**********

1) Avant de lancer la macro, il faut sélectionner au moins 2 feuilles
(par clic gauche avec Ctrl appuyée ET maintenue)
2) Une boîte demande de sélectionner une plage
3) Si différences constatées, le programme stoppe et affiche
deux feuilles log où apparaissent les différences.
4) Dans ce cas et après correction, refaire la même manipulation
pour contrôler les autres feuilles (dans la mesure où plus de
2 feuilles sont à contrôler)

Cordialement.

--
PMO
Patrick Morange



Bonjour a tous,

j'ai la formule suivante =SOMME(SI(NB.SI($B$67:$B$83;$H$67:$H$83)=0;1;0))

qui me compare 2 plage et qui m'indique le nombre de cellule qui son
differente.

mais le probleme c'est qu'il me fadrait une formule semblable a l'aide d'une
macro et qui peu comparer plus de 2 cellule, Car cette formule ne peu en
comparer plus de 2 :(

exemple j'ai 4 feuille

feuil1 feuil2 feuil3 feuil4
A1=1 A1=1 A1=2 A1=1
A2=2 A2=2 A2=3 A2=2

j'aimerai qu'il me compare les 4 feuilles et qui me ramene sur un autre
feuille les cellule A1 et A2 de la feuil3 car il ne son pas parreil au autre
feuilles

est-ce possible ???
merci de votre aide





Avatar
Michael
Merci pour la piste PMO c'est excellent :)

"PMO" <patrickPOINTmorangeAROBASElapostePOINTnet> a écrit dans le message de
news:
Bonjour,

Une piste avec le code ci-dessous à copier dans un
module standard.

'**********
Sub PMO_CompareCellules()
Dim S As Worksheet
Dim R As Range
Dim var1
Dim var2
Dim i&
Dim j&
Dim k&
Dim bool As Boolean
Dim nom1$
Dim nom2$
With ActiveWindow
If .SelectedSheets.Count = 1 Then
MsgBox "Veuillez sélectionner plusieurs feuilles." & _
vbCrLf & vbCrLf & _
"Maintenez la touche Ctrl pour ce faire."
Exit Sub
End If
On Error GoTo fin
Set R = Application.InputBox( _
prompt:="Sélectionnez une plage.", Type:=8)
For k& = 2 To .SelectedSheets.Count
bool = False
var1 = .SelectedSheets(k& - 1).Range(R.Address)
var2 = .SelectedSheets(k&).Range(R.Address)
For i& = 1 To UBound(var1, 1)
For j& = 1 To UBound(var1, 2)
If var1(i&, j&) = var2(i&, j&) Then
var1(i&, j&) = ""
var2(i&, j&) = ""
Else
nom1$ = .SelectedSheets(k& - 1).Name
nom2$ = .SelectedSheets(k&).Name
bool = True
End If
Next j&
Next i&
If bool Then
Sheets(nom1$).Select
Set S = Sheets.Add(after:=Sheets(Sheets.Count))
S.Range(R.Address) = var1
S.Name = nom1$ & "_log"
Set S = Sheets.Add
S.Range(R.Address) = var2
S.Name = nom2$ & "_log"
MsgBox "Différences constatées. Programme stoppé."
Exit Sub
End If
Next k&
End With
MsgBox "Aucune différence. Terminé."
fin:
End Sub
'**********

1) Avant de lancer la macro, il faut sélectionner au moins 2 feuilles
(par clic gauche avec Ctrl appuyée ET maintenue)
2) Une boîte demande de sélectionner une plage
3) Si différences constatées, le programme stoppe et affiche
deux feuilles log où apparaissent les différences.
4) Dans ce cas et après correction, refaire la même manipulation
pour contrôler les autres feuilles (dans la mesure où plus de
2 feuilles sont à contrôler)

Cordialement.

--
PMO
Patrick Morange



Bonjour a tous,

j'ai la formule suivante =SOMME(SI(NB.SI($B$67:$B$83;$H$67:$H$83)=0;1;0))

qui me compare 2 plage et qui m'indique le nombre de cellule qui son
differente.

mais le probleme c'est qu'il me fadrait une formule semblable a l'aide
d'une
macro et qui peu comparer plus de 2 cellule, Car cette formule ne peu en
comparer plus de 2 :(

exemple j'ai 4 feuille

feuil1 feuil2 feuil3 feuil4
A1=1 A1=1 A1=2 A1=1
A2=2 A2=2 A2=3 A2=2

j'aimerai qu'il me compare les 4 feuilles et qui me ramene sur un autre
feuille les cellule A1 et A2 de la feuil3 car il ne son pas parreil au
autre
feuilles

est-ce possible ???
merci de votre aide