Bonjour a tous,
J'ai un probleme lors de la comparaison entre deux feuilles qui
contiennent
les mêmes valeurs, la première par formule et la seconde directement par
valeur.
Je compare ces deux feuilles cellule par cellule via le code suivant:
Code :
For Each oCell In Firstsheet.UsedRange
If oCell.Value <> SecondSheet.Range(oCell.Address).Value Then
different = True
MsgBox "Different sheets"
Exit For
End If
Next oCell
If Not different Then
MsgBox "Identical sheets"
End If
En executant ce code, vba detecte une cellule qui ne contient pas la même
valeur dans les deux feuilles.
Et quand je fais differents tests pour comparer ces deux cellules
j'obtiens
ceci
Code :
?ocell.Value
100
?SecondSheet.Range(ocell.Address ).Value
100
?TypeName(ocell.Value)
Double
?TypeName(SecondSheet.Range(oCell.Address ).Value)
Double
?oCell.Value = 100
False
?oCell.Value = cstr(100)
True
?SecondSheet.Range(oCell.Address).Value = 100
True
?SecondSheet.Range(oCell.Address).Value = cstr(100)
True
?oCell.Value = SecondSheet.Range(oCell.Address ).Value
False
Je rappelle que la premiere feuille contient des formules la secondes des
valeurs.
Avez-vous une idée de ce qui se passe?
merci
Bonjour a tous,
J'ai un probleme lors de la comparaison entre deux feuilles qui
contiennent
les mêmes valeurs, la première par formule et la seconde directement par
valeur.
Je compare ces deux feuilles cellule par cellule via le code suivant:
Code :
For Each oCell In Firstsheet.UsedRange
If oCell.Value <> SecondSheet.Range(oCell.Address).Value Then
different = True
MsgBox "Different sheets"
Exit For
End If
Next oCell
If Not different Then
MsgBox "Identical sheets"
End If
En executant ce code, vba detecte une cellule qui ne contient pas la même
valeur dans les deux feuilles.
Et quand je fais differents tests pour comparer ces deux cellules
j'obtiens
ceci
Code :
?ocell.Value
100
?SecondSheet.Range(ocell.Address ).Value
100
?TypeName(ocell.Value)
Double
?TypeName(SecondSheet.Range(oCell.Address ).Value)
Double
?oCell.Value = 100
False
?oCell.Value = cstr(100)
True
?SecondSheet.Range(oCell.Address).Value = 100
True
?SecondSheet.Range(oCell.Address).Value = cstr(100)
True
?oCell.Value = SecondSheet.Range(oCell.Address ).Value
False
Je rappelle que la premiere feuille contient des formules la secondes des
valeurs.
Avez-vous une idée de ce qui se passe?
merci
Bonjour a tous,
J'ai un probleme lors de la comparaison entre deux feuilles qui
contiennent
les mêmes valeurs, la première par formule et la seconde directement par
valeur.
Je compare ces deux feuilles cellule par cellule via le code suivant:
Code :
For Each oCell In Firstsheet.UsedRange
If oCell.Value <> SecondSheet.Range(oCell.Address).Value Then
different = True
MsgBox "Different sheets"
Exit For
End If
Next oCell
If Not different Then
MsgBox "Identical sheets"
End If
En executant ce code, vba detecte une cellule qui ne contient pas la même
valeur dans les deux feuilles.
Et quand je fais differents tests pour comparer ces deux cellules
j'obtiens
ceci
Code :
?ocell.Value
100
?SecondSheet.Range(ocell.Address ).Value
100
?TypeName(ocell.Value)
Double
?TypeName(SecondSheet.Range(oCell.Address ).Value)
Double
?oCell.Value = 100
False
?oCell.Value = cstr(100)
True
?SecondSheet.Range(oCell.Address).Value = 100
True
?SecondSheet.Range(oCell.Address).Value = cstr(100)
True
?oCell.Value = SecondSheet.Range(oCell.Address ).Value
False
Je rappelle que la premiere feuille contient des formules la secondes des
valeurs.
Avez-vous une idée de ce qui se passe?
merci
Essaie quelque chose comme :
'-----------------------------------
Sub Test()
Dim DerLig As Long, DerCol As Integer
Dim Adr As String, Tblo1, Tblo2
With Worksheets("Feuil1") ' Nom à déterminer
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
With .Range(.Range("A1"), .Cells(DerLig, DerCol))
Adr = .Address
Tblo1 = .Value
End With
End With
With Worksheets("Feuil2") ' Nom à déterminer
Tblo2 = .Range(Adr).Value
End With
For a = 1 To UBound(Tblo1, 1)
For b = 1 To UBound(Tblo1, 2)
If Tblo1(a, b) <> Tblo2(a, b) Then
MsgBox "Différence " & Cells(a, b).Address
End If
Next
Next
End Sub
'-----------------------------------
"GlamIs" a écrit dans le message de news:
> Bonjour a tous,
> J'ai un probleme lors de la comparaison entre deux feuilles qui
> contiennent
> les mêmes valeurs, la première par formule et la seconde directement par
> valeur.
>
> Je compare ces deux feuilles cellule par cellule via le code suivant:
>
> Code :
>
> For Each oCell In Firstsheet.UsedRange
> If oCell.Value <> SecondSheet.Range(oCell.Address).Value Then
> different = True
> MsgBox "Different sheets"
> Exit For
> End If
> Next oCell
> If Not different Then
> MsgBox "Identical sheets"
> End If
> En executant ce code, vba detecte une cellule qui ne contient pas la même
> valeur dans les deux feuilles.
> Et quand je fais differents tests pour comparer ces deux cellules
> j'obtiens
> ceci
> Code :
>
> ?ocell.Value
> 100
>
> ?SecondSheet.Range(ocell.Address ).Value
> 100
>
> ?TypeName(ocell.Value)
> Double
>
> ?TypeName(SecondSheet.Range(oCell.Address ).Value)
> Double
>
> ?oCell.Value = 100
> False
>
> ?oCell.Value = cstr(100)
> True
>
> ?SecondSheet.Range(oCell.Address).Value = 100
> True
>
> ?SecondSheet.Range(oCell.Address).Value = cstr(100)
> True
>
> ?oCell.Value = SecondSheet.Range(oCell.Address ).Value
> False
>
> Je rappelle que la premiere feuille contient des formules la secondes des
> valeurs.
> Avez-vous une idée de ce qui se passe?
> merci
Essaie quelque chose comme :
'-----------------------------------
Sub Test()
Dim DerLig As Long, DerCol As Integer
Dim Adr As String, Tblo1, Tblo2
With Worksheets("Feuil1") ' Nom à déterminer
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
With .Range(.Range("A1"), .Cells(DerLig, DerCol))
Adr = .Address
Tblo1 = .Value
End With
End With
With Worksheets("Feuil2") ' Nom à déterminer
Tblo2 = .Range(Adr).Value
End With
For a = 1 To UBound(Tblo1, 1)
For b = 1 To UBound(Tblo1, 2)
If Tblo1(a, b) <> Tblo2(a, b) Then
MsgBox "Différence " & Cells(a, b).Address
End If
Next
Next
End Sub
'-----------------------------------
"GlamIs" <GlamIs@discussions.microsoft.com> a écrit dans le message de news:
77C36A52-CEE9-4C28-97D6-1B877ECC25C0@microsoft.com...
> Bonjour a tous,
> J'ai un probleme lors de la comparaison entre deux feuilles qui
> contiennent
> les mêmes valeurs, la première par formule et la seconde directement par
> valeur.
>
> Je compare ces deux feuilles cellule par cellule via le code suivant:
>
> Code :
>
> For Each oCell In Firstsheet.UsedRange
> If oCell.Value <> SecondSheet.Range(oCell.Address).Value Then
> different = True
> MsgBox "Different sheets"
> Exit For
> End If
> Next oCell
> If Not different Then
> MsgBox "Identical sheets"
> End If
> En executant ce code, vba detecte une cellule qui ne contient pas la même
> valeur dans les deux feuilles.
> Et quand je fais differents tests pour comparer ces deux cellules
> j'obtiens
> ceci
> Code :
>
> ?ocell.Value
> 100
>
> ?SecondSheet.Range(ocell.Address ).Value
> 100
>
> ?TypeName(ocell.Value)
> Double
>
> ?TypeName(SecondSheet.Range(oCell.Address ).Value)
> Double
>
> ?oCell.Value = 100
> False
>
> ?oCell.Value = cstr(100)
> True
>
> ?SecondSheet.Range(oCell.Address).Value = 100
> True
>
> ?SecondSheet.Range(oCell.Address).Value = cstr(100)
> True
>
> ?oCell.Value = SecondSheet.Range(oCell.Address ).Value
> False
>
> Je rappelle que la premiere feuille contient des formules la secondes des
> valeurs.
> Avez-vous une idée de ce qui se passe?
> merci
Essaie quelque chose comme :
'-----------------------------------
Sub Test()
Dim DerLig As Long, DerCol As Integer
Dim Adr As String, Tblo1, Tblo2
With Worksheets("Feuil1") ' Nom à déterminer
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
With .Range(.Range("A1"), .Cells(DerLig, DerCol))
Adr = .Address
Tblo1 = .Value
End With
End With
With Worksheets("Feuil2") ' Nom à déterminer
Tblo2 = .Range(Adr).Value
End With
For a = 1 To UBound(Tblo1, 1)
For b = 1 To UBound(Tblo1, 2)
If Tblo1(a, b) <> Tblo2(a, b) Then
MsgBox "Différence " & Cells(a, b).Address
End If
Next
Next
End Sub
'-----------------------------------
"GlamIs" a écrit dans le message de news:
> Bonjour a tous,
> J'ai un probleme lors de la comparaison entre deux feuilles qui
> contiennent
> les mêmes valeurs, la première par formule et la seconde directement par
> valeur.
>
> Je compare ces deux feuilles cellule par cellule via le code suivant:
>
> Code :
>
> For Each oCell In Firstsheet.UsedRange
> If oCell.Value <> SecondSheet.Range(oCell.Address).Value Then
> different = True
> MsgBox "Different sheets"
> Exit For
> End If
> Next oCell
> If Not different Then
> MsgBox "Identical sheets"
> End If
> En executant ce code, vba detecte une cellule qui ne contient pas la même
> valeur dans les deux feuilles.
> Et quand je fais differents tests pour comparer ces deux cellules
> j'obtiens
> ceci
> Code :
>
> ?ocell.Value
> 100
>
> ?SecondSheet.Range(ocell.Address ).Value
> 100
>
> ?TypeName(ocell.Value)
> Double
>
> ?TypeName(SecondSheet.Range(oCell.Address ).Value)
> Double
>
> ?oCell.Value = 100
> False
>
> ?oCell.Value = cstr(100)
> True
>
> ?SecondSheet.Range(oCell.Address).Value = 100
> True
>
> ?SecondSheet.Range(oCell.Address).Value = cstr(100)
> True
>
> ?oCell.Value = SecondSheet.Range(oCell.Address ).Value
> False
>
> Je rappelle que la premiere feuille contient des formules la secondes des
> valeurs.
> Avez-vous une idée de ce qui se passe?
> merci
UA fait moi je n'est pas la main sur le code VBA, mais je peux changer les
feuilles.
Cependant je ne comprend pas pourquoi les deux valeurs ne sont pas
identiques pourtant quand je fais des tests j'obtiens ceci:
code:
?ocell.Value
100
?SecondSheet.Range(ocell.Address ).Value
100
?TypeName(ocell.Value)
Double
?TypeName(SecondSheet.Range(oCell.Address ).Value)
Double
"michdenis" wrote:Essaie quelque chose comme :
'-----------------------------------
Sub Test()
Dim DerLig As Long, DerCol As Integer
Dim Adr As String, Tblo1, Tblo2
With Worksheets("Feuil1") ' Nom à déterminer
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
With .Range(.Range("A1"), .Cells(DerLig, DerCol))
Adr = .Address
Tblo1 = .Value
End With
End With
With Worksheets("Feuil2") ' Nom à déterminer
Tblo2 = .Range(Adr).Value
End With
For a = 1 To UBound(Tblo1, 1)
For b = 1 To UBound(Tblo1, 2)
If Tblo1(a, b) <> Tblo2(a, b) Then
MsgBox "Différence " & Cells(a, b).Address
End If
Next
Next
End Sub
'-----------------------------------
"GlamIs" a écrit dans le message de
news:
> Bonjour a tous,
> J'ai un probleme lors de la comparaison entre deux feuilles qui
> contiennent
> les mêmes valeurs, la première par formule et la seconde directement
> par
> valeur.
>
> Je compare ces deux feuilles cellule par cellule via le code suivant:
>
> Code :
>
> For Each oCell In Firstsheet.UsedRange
> If oCell.Value <> SecondSheet.Range(oCell.Address).Value
> Then
> different = True
> MsgBox "Different sheets"
> Exit For
> End If
> Next oCell
> If Not different Then
> MsgBox "Identical sheets"
> End If
> En executant ce code, vba detecte une cellule qui ne contient pas la
> même
> valeur dans les deux feuilles.
> Et quand je fais differents tests pour comparer ces deux cellules
> j'obtiens
> ceci
> Code :
>
> ?ocell.Value
> 100
>
> ?SecondSheet.Range(ocell.Address ).Value
> 100
>
> ?TypeName(ocell.Value)
> Double
>
> ?TypeName(SecondSheet.Range(oCell.Address ).Value)
> Double
>
> ?oCell.Value = 100
> False
>
> ?oCell.Value = cstr(100)
> True
>
> ?SecondSheet.Range(oCell.Address).Value = 100
> True
>
> ?SecondSheet.Range(oCell.Address).Value = cstr(100)
> True
>
> ?oCell.Value = SecondSheet.Range(oCell.Address ).Value
> False
>
> Je rappelle que la premiere feuille contient des formules la secondes
> des
> valeurs.
> Avez-vous une idée de ce qui se passe?
> merci
UA fait moi je n'est pas la main sur le code VBA, mais je peux changer les
feuilles.
Cependant je ne comprend pas pourquoi les deux valeurs ne sont pas
identiques pourtant quand je fais des tests j'obtiens ceci:
code:
?ocell.Value
100
?SecondSheet.Range(ocell.Address ).Value
100
?TypeName(ocell.Value)
Double
?TypeName(SecondSheet.Range(oCell.Address ).Value)
Double
"michdenis" wrote:
Essaie quelque chose comme :
'-----------------------------------
Sub Test()
Dim DerLig As Long, DerCol As Integer
Dim Adr As String, Tblo1, Tblo2
With Worksheets("Feuil1") ' Nom à déterminer
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
With .Range(.Range("A1"), .Cells(DerLig, DerCol))
Adr = .Address
Tblo1 = .Value
End With
End With
With Worksheets("Feuil2") ' Nom à déterminer
Tblo2 = .Range(Adr).Value
End With
For a = 1 To UBound(Tblo1, 1)
For b = 1 To UBound(Tblo1, 2)
If Tblo1(a, b) <> Tblo2(a, b) Then
MsgBox "Différence " & Cells(a, b).Address
End If
Next
Next
End Sub
'-----------------------------------
"GlamIs" <GlamIs@discussions.microsoft.com> a écrit dans le message de
news:
77C36A52-CEE9-4C28-97D6-1B877ECC25C0@microsoft.com...
> Bonjour a tous,
> J'ai un probleme lors de la comparaison entre deux feuilles qui
> contiennent
> les mêmes valeurs, la première par formule et la seconde directement
> par
> valeur.
>
> Je compare ces deux feuilles cellule par cellule via le code suivant:
>
> Code :
>
> For Each oCell In Firstsheet.UsedRange
> If oCell.Value <> SecondSheet.Range(oCell.Address).Value
> Then
> different = True
> MsgBox "Different sheets"
> Exit For
> End If
> Next oCell
> If Not different Then
> MsgBox "Identical sheets"
> End If
> En executant ce code, vba detecte une cellule qui ne contient pas la
> même
> valeur dans les deux feuilles.
> Et quand je fais differents tests pour comparer ces deux cellules
> j'obtiens
> ceci
> Code :
>
> ?ocell.Value
> 100
>
> ?SecondSheet.Range(ocell.Address ).Value
> 100
>
> ?TypeName(ocell.Value)
> Double
>
> ?TypeName(SecondSheet.Range(oCell.Address ).Value)
> Double
>
> ?oCell.Value = 100
> False
>
> ?oCell.Value = cstr(100)
> True
>
> ?SecondSheet.Range(oCell.Address).Value = 100
> True
>
> ?SecondSheet.Range(oCell.Address).Value = cstr(100)
> True
>
> ?oCell.Value = SecondSheet.Range(oCell.Address ).Value
> False
>
> Je rappelle que la premiere feuille contient des formules la secondes
> des
> valeurs.
> Avez-vous une idée de ce qui se passe?
> merci
UA fait moi je n'est pas la main sur le code VBA, mais je peux changer les
feuilles.
Cependant je ne comprend pas pourquoi les deux valeurs ne sont pas
identiques pourtant quand je fais des tests j'obtiens ceci:
code:
?ocell.Value
100
?SecondSheet.Range(ocell.Address ).Value
100
?TypeName(ocell.Value)
Double
?TypeName(SecondSheet.Range(oCell.Address ).Value)
Double
"michdenis" wrote:Essaie quelque chose comme :
'-----------------------------------
Sub Test()
Dim DerLig As Long, DerCol As Integer
Dim Adr As String, Tblo1, Tblo2
With Worksheets("Feuil1") ' Nom à déterminer
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
With .Range(.Range("A1"), .Cells(DerLig, DerCol))
Adr = .Address
Tblo1 = .Value
End With
End With
With Worksheets("Feuil2") ' Nom à déterminer
Tblo2 = .Range(Adr).Value
End With
For a = 1 To UBound(Tblo1, 1)
For b = 1 To UBound(Tblo1, 2)
If Tblo1(a, b) <> Tblo2(a, b) Then
MsgBox "Différence " & Cells(a, b).Address
End If
Next
Next
End Sub
'-----------------------------------
"GlamIs" a écrit dans le message de
news:
> Bonjour a tous,
> J'ai un probleme lors de la comparaison entre deux feuilles qui
> contiennent
> les mêmes valeurs, la première par formule et la seconde directement
> par
> valeur.
>
> Je compare ces deux feuilles cellule par cellule via le code suivant:
>
> Code :
>
> For Each oCell In Firstsheet.UsedRange
> If oCell.Value <> SecondSheet.Range(oCell.Address).Value
> Then
> different = True
> MsgBox "Different sheets"
> Exit For
> End If
> Next oCell
> If Not different Then
> MsgBox "Identical sheets"
> End If
> En executant ce code, vba detecte une cellule qui ne contient pas la
> même
> valeur dans les deux feuilles.
> Et quand je fais differents tests pour comparer ces deux cellules
> j'obtiens
> ceci
> Code :
>
> ?ocell.Value
> 100
>
> ?SecondSheet.Range(ocell.Address ).Value
> 100
>
> ?TypeName(ocell.Value)
> Double
>
> ?TypeName(SecondSheet.Range(oCell.Address ).Value)
> Double
>
> ?oCell.Value = 100
> False
>
> ?oCell.Value = cstr(100)
> True
>
> ?SecondSheet.Range(oCell.Address).Value = 100
> True
>
> ?SecondSheet.Range(oCell.Address).Value = cstr(100)
> True
>
> ?oCell.Value = SecondSheet.Range(oCell.Address ).Value
> False
>
> Je rappelle que la premiere feuille contient des formules la secondes
> des
> valeurs.
> Avez-vous une idée de ce qui se passe?
> merci
?TypeName(ocell.Value)
Double
?TypeName(SecondSheet.Range(oCell.Address ).Value)
Double
En principe, cela devrait fonctionner ...
Est-ce possible que tu aies des cellules avec des formats différents
(texte par exemple vs Standard)
Si certaines cellules contiennent du texte, la casse des caractères compte.
Il doit y avoir quelque chose que tu nous dis pas ! ;-)
PS- Définir une plage avec UsedRange a des fins d'une boucle
n'est pas la meilleure façon de le faire !
"GlamIs" a écrit dans le message de news:
> UA fait moi je n'est pas la main sur le code VBA, mais je peux changer les
> feuilles.
> Cependant je ne comprend pas pourquoi les deux valeurs ne sont pas
> identiques pourtant quand je fais des tests j'obtiens ceci:
> code:
>
> ?ocell.Value
> 100
> ?SecondSheet.Range(ocell.Address ).Value
> 100
> ?TypeName(ocell.Value)
> Double
> ?TypeName(SecondSheet.Range(oCell.Address ).Value)
> Double
>
>
>
> "michdenis" wrote:
>
>> Essaie quelque chose comme :
>>
>> '-----------------------------------
>> Sub Test()
>> Dim DerLig As Long, DerCol As Integer
>> Dim Adr As String, Tblo1, Tblo2
>> With Worksheets("Feuil1") ' Nom à déterminer
>> DerLig = .Cells.Find(What:="*", _
>> LookIn:=xlFormulas, _
>> SearchOrder:=xlByRows, _
>> SearchDirection:=xlPrevious).Row
>> DerCol = .Cells.Find(What:="*", _
>> LookIn:=xlFormulas, _
>> SearchOrder:=xlByColumns, _
>> SearchDirection:=xlPrevious).Column
>>
>> With .Range(.Range("A1"), .Cells(DerLig, DerCol))
>> Adr = .Address
>> Tblo1 = .Value
>> End With
>> End With
>>
>> With Worksheets("Feuil2") ' Nom à déterminer
>> Tblo2 = .Range(Adr).Value
>> End With
>>
>> For a = 1 To UBound(Tblo1, 1)
>> For b = 1 To UBound(Tblo1, 2)
>> If Tblo1(a, b) <> Tblo2(a, b) Then
>> MsgBox "Différence " & Cells(a, b).Address
>> End If
>> Next
>> Next
>> End Sub
>> '-----------------------------------
>>
>>
>>
>>
>> "GlamIs" a écrit dans le message de
>> news:
>>
>> > Bonjour a tous,
>> > J'ai un probleme lors de la comparaison entre deux feuilles qui
>> > contiennent
>> > les mêmes valeurs, la première par formule et la seconde directement
>> > par
>> > valeur.
>> >
>> > Je compare ces deux feuilles cellule par cellule via le code suivant:
>> >
>> > Code :
>> >
>> > For Each oCell In Firstsheet.UsedRange
>> > If oCell.Value <> SecondSheet.Range(oCell.Address).Value
>> > Then
>> > different = True
>> > MsgBox "Different sheets"
>> > Exit For
>> > End If
>> > Next oCell
>> > If Not different Then
>> > MsgBox "Identical sheets"
>> > End If
>> > En executant ce code, vba detecte une cellule qui ne contient pas la
>> > même
>> > valeur dans les deux feuilles.
>> > Et quand je fais differents tests pour comparer ces deux cellules
>> > j'obtiens
>> > ceci
>> > Code :
>> >
>> > ?ocell.Value
>> > 100
>> >
>> > ?SecondSheet.Range(ocell.Address ).Value
>> > 100
>> >
>> > ?TypeName(ocell.Value)
>> > Double
>> >
>> > ?TypeName(SecondSheet.Range(oCell.Address ).Value)
>> > Double
>> >
>> > ?oCell.Value = 100
>> > False
>> >
>> > ?oCell.Value = cstr(100)
>> > True
>> >
>> > ?SecondSheet.Range(oCell.Address).Value = 100
>> > True
>> >
>> > ?SecondSheet.Range(oCell.Address).Value = cstr(100)
>> > True
>> >
>> > ?oCell.Value = SecondSheet.Range(oCell.Address ).Value
>> > False
>> >
>> > Je rappelle que la premiere feuille contient des formules la secondes
>> > des
>> > valeurs.
>> > Avez-vous une idée de ce qui se passe?
>> > merci
>>
>>
>>
?TypeName(ocell.Value)
Double
?TypeName(SecondSheet.Range(oCell.Address ).Value)
Double
En principe, cela devrait fonctionner ...
Est-ce possible que tu aies des cellules avec des formats différents
(texte par exemple vs Standard)
Si certaines cellules contiennent du texte, la casse des caractères compte.
Il doit y avoir quelque chose que tu nous dis pas ! ;-)
PS- Définir une plage avec UsedRange a des fins d'une boucle
n'est pas la meilleure façon de le faire !
"GlamIs" <GlamIs@discussions.microsoft.com> a écrit dans le message de news:
7BE3CCA7-5C57-49C7-867E-264ADBC37999@microsoft.com...
> UA fait moi je n'est pas la main sur le code VBA, mais je peux changer les
> feuilles.
> Cependant je ne comprend pas pourquoi les deux valeurs ne sont pas
> identiques pourtant quand je fais des tests j'obtiens ceci:
> code:
>
> ?ocell.Value
> 100
> ?SecondSheet.Range(ocell.Address ).Value
> 100
> ?TypeName(ocell.Value)
> Double
> ?TypeName(SecondSheet.Range(oCell.Address ).Value)
> Double
>
>
>
> "michdenis" wrote:
>
>> Essaie quelque chose comme :
>>
>> '-----------------------------------
>> Sub Test()
>> Dim DerLig As Long, DerCol As Integer
>> Dim Adr As String, Tblo1, Tblo2
>> With Worksheets("Feuil1") ' Nom à déterminer
>> DerLig = .Cells.Find(What:="*", _
>> LookIn:=xlFormulas, _
>> SearchOrder:=xlByRows, _
>> SearchDirection:=xlPrevious).Row
>> DerCol = .Cells.Find(What:="*", _
>> LookIn:=xlFormulas, _
>> SearchOrder:=xlByColumns, _
>> SearchDirection:=xlPrevious).Column
>>
>> With .Range(.Range("A1"), .Cells(DerLig, DerCol))
>> Adr = .Address
>> Tblo1 = .Value
>> End With
>> End With
>>
>> With Worksheets("Feuil2") ' Nom à déterminer
>> Tblo2 = .Range(Adr).Value
>> End With
>>
>> For a = 1 To UBound(Tblo1, 1)
>> For b = 1 To UBound(Tblo1, 2)
>> If Tblo1(a, b) <> Tblo2(a, b) Then
>> MsgBox "Différence " & Cells(a, b).Address
>> End If
>> Next
>> Next
>> End Sub
>> '-----------------------------------
>>
>>
>>
>>
>> "GlamIs" <GlamIs@discussions.microsoft.com> a écrit dans le message de
>> news:
>> 77C36A52-CEE9-4C28-97D6-1B877ECC25C0@microsoft.com...
>> > Bonjour a tous,
>> > J'ai un probleme lors de la comparaison entre deux feuilles qui
>> > contiennent
>> > les mêmes valeurs, la première par formule et la seconde directement
>> > par
>> > valeur.
>> >
>> > Je compare ces deux feuilles cellule par cellule via le code suivant:
>> >
>> > Code :
>> >
>> > For Each oCell In Firstsheet.UsedRange
>> > If oCell.Value <> SecondSheet.Range(oCell.Address).Value
>> > Then
>> > different = True
>> > MsgBox "Different sheets"
>> > Exit For
>> > End If
>> > Next oCell
>> > If Not different Then
>> > MsgBox "Identical sheets"
>> > End If
>> > En executant ce code, vba detecte une cellule qui ne contient pas la
>> > même
>> > valeur dans les deux feuilles.
>> > Et quand je fais differents tests pour comparer ces deux cellules
>> > j'obtiens
>> > ceci
>> > Code :
>> >
>> > ?ocell.Value
>> > 100
>> >
>> > ?SecondSheet.Range(ocell.Address ).Value
>> > 100
>> >
>> > ?TypeName(ocell.Value)
>> > Double
>> >
>> > ?TypeName(SecondSheet.Range(oCell.Address ).Value)
>> > Double
>> >
>> > ?oCell.Value = 100
>> > False
>> >
>> > ?oCell.Value = cstr(100)
>> > True
>> >
>> > ?SecondSheet.Range(oCell.Address).Value = 100
>> > True
>> >
>> > ?SecondSheet.Range(oCell.Address).Value = cstr(100)
>> > True
>> >
>> > ?oCell.Value = SecondSheet.Range(oCell.Address ).Value
>> > False
>> >
>> > Je rappelle que la premiere feuille contient des formules la secondes
>> > des
>> > valeurs.
>> > Avez-vous une idée de ce qui se passe?
>> > merci
>>
>>
>>
?TypeName(ocell.Value)
Double
?TypeName(SecondSheet.Range(oCell.Address ).Value)
Double
En principe, cela devrait fonctionner ...
Est-ce possible que tu aies des cellules avec des formats différents
(texte par exemple vs Standard)
Si certaines cellules contiennent du texte, la casse des caractères compte.
Il doit y avoir quelque chose que tu nous dis pas ! ;-)
PS- Définir une plage avec UsedRange a des fins d'une boucle
n'est pas la meilleure façon de le faire !
"GlamIs" a écrit dans le message de news:
> UA fait moi je n'est pas la main sur le code VBA, mais je peux changer les
> feuilles.
> Cependant je ne comprend pas pourquoi les deux valeurs ne sont pas
> identiques pourtant quand je fais des tests j'obtiens ceci:
> code:
>
> ?ocell.Value
> 100
> ?SecondSheet.Range(ocell.Address ).Value
> 100
> ?TypeName(ocell.Value)
> Double
> ?TypeName(SecondSheet.Range(oCell.Address ).Value)
> Double
>
>
>
> "michdenis" wrote:
>
>> Essaie quelque chose comme :
>>
>> '-----------------------------------
>> Sub Test()
>> Dim DerLig As Long, DerCol As Integer
>> Dim Adr As String, Tblo1, Tblo2
>> With Worksheets("Feuil1") ' Nom à déterminer
>> DerLig = .Cells.Find(What:="*", _
>> LookIn:=xlFormulas, _
>> SearchOrder:=xlByRows, _
>> SearchDirection:=xlPrevious).Row
>> DerCol = .Cells.Find(What:="*", _
>> LookIn:=xlFormulas, _
>> SearchOrder:=xlByColumns, _
>> SearchDirection:=xlPrevious).Column
>>
>> With .Range(.Range("A1"), .Cells(DerLig, DerCol))
>> Adr = .Address
>> Tblo1 = .Value
>> End With
>> End With
>>
>> With Worksheets("Feuil2") ' Nom à déterminer
>> Tblo2 = .Range(Adr).Value
>> End With
>>
>> For a = 1 To UBound(Tblo1, 1)
>> For b = 1 To UBound(Tblo1, 2)
>> If Tblo1(a, b) <> Tblo2(a, b) Then
>> MsgBox "Différence " & Cells(a, b).Address
>> End If
>> Next
>> Next
>> End Sub
>> '-----------------------------------
>>
>>
>>
>>
>> "GlamIs" a écrit dans le message de
>> news:
>>
>> > Bonjour a tous,
>> > J'ai un probleme lors de la comparaison entre deux feuilles qui
>> > contiennent
>> > les mêmes valeurs, la première par formule et la seconde directement
>> > par
>> > valeur.
>> >
>> > Je compare ces deux feuilles cellule par cellule via le code suivant:
>> >
>> > Code :
>> >
>> > For Each oCell In Firstsheet.UsedRange
>> > If oCell.Value <> SecondSheet.Range(oCell.Address).Value
>> > Then
>> > different = True
>> > MsgBox "Different sheets"
>> > Exit For
>> > End If
>> > Next oCell
>> > If Not different Then
>> > MsgBox "Identical sheets"
>> > End If
>> > En executant ce code, vba detecte une cellule qui ne contient pas la
>> > même
>> > valeur dans les deux feuilles.
>> > Et quand je fais differents tests pour comparer ces deux cellules
>> > j'obtiens
>> > ceci
>> > Code :
>> >
>> > ?ocell.Value
>> > 100
>> >
>> > ?SecondSheet.Range(ocell.Address ).Value
>> > 100
>> >
>> > ?TypeName(ocell.Value)
>> > Double
>> >
>> > ?TypeName(SecondSheet.Range(oCell.Address ).Value)
>> > Double
>> >
>> > ?oCell.Value = 100
>> > False
>> >
>> > ?oCell.Value = cstr(100)
>> > True
>> >
>> > ?SecondSheet.Range(oCell.Address).Value = 100
>> > True
>> >
>> > ?SecondSheet.Range(oCell.Address).Value = cstr(100)
>> > True
>> >
>> > ?oCell.Value = SecondSheet.Range(oCell.Address ).Value
>> > False
>> >
>> > Je rappelle que la premiere feuille contient des formules la secondes
>> > des
>> > valeurs.
>> > Avez-vous une idée de ce qui se passe?
>> > merci
>>
>>
>>
non les deux cellules ont le meme format:?TypeName(ocell.Value)
Double
?TypeName(SecondSheet.Range(oCell.Address ).Value)
Double
et c'est ce format qui pose problème. Je m'explique:
Comme le format de mes cellules est Double, il doit bien avoir un chiffre
apres la virgule qui existe mais que Excel ne peut afficher (je sais que
l'affichage est limité en terme de bits!)
Quand je force le passage en entier, dans les formules de ma première
feuille, je n'obtient plus d'erreur et Excel est aussi content que moi ^^
Donc je peux dire que mon problème est résolu par une solution de
contournement!
"michdenis" wrote:En principe, cela devrait fonctionner ...
Est-ce possible que tu aies des cellules avec des formats différents
(texte par exemple vs Standard)
Si certaines cellules contiennent du texte, la casse des caractères
compte.
Il doit y avoir quelque chose que tu nous dis pas ! ;-)
PS- Définir une plage avec UsedRange a des fins d'une boucle
n'est pas la meilleure façon de le faire !
"GlamIs" a écrit dans le message de
news:
> UA fait moi je n'est pas la main sur le code VBA, mais je peux changer
> les
> feuilles.
> Cependant je ne comprend pas pourquoi les deux valeurs ne sont pas
> identiques pourtant quand je fais des tests j'obtiens ceci:
> code:
>
> ?ocell.Value
> 100
> ?SecondSheet.Range(ocell.Address ).Value
> 100
> ?TypeName(ocell.Value)
> Double
> ?TypeName(SecondSheet.Range(oCell.Address ).Value)
> Double
>
>
>
> "michdenis" wrote:
>
>> Essaie quelque chose comme :
>>
>> '-----------------------------------
>> Sub Test()
>> Dim DerLig As Long, DerCol As Integer
>> Dim Adr As String, Tblo1, Tblo2
>> With Worksheets("Feuil1") ' Nom à déterminer
>> DerLig = .Cells.Find(What:="*", _
>> LookIn:=xlFormulas, _
>> SearchOrder:=xlByRows, _
>> SearchDirection:=xlPrevious).Row
>> DerCol = .Cells.Find(What:="*", _
>> LookIn:=xlFormulas, _
>> SearchOrder:=xlByColumns, _
>> SearchDirection:=xlPrevious).Column
>>
>> With .Range(.Range("A1"), .Cells(DerLig, DerCol))
>> Adr = .Address
>> Tblo1 = .Value
>> End With
>> End With
>>
>> With Worksheets("Feuil2") ' Nom à déterminer
>> Tblo2 = .Range(Adr).Value
>> End With
>>
>> For a = 1 To UBound(Tblo1, 1)
>> For b = 1 To UBound(Tblo1, 2)
>> If Tblo1(a, b) <> Tblo2(a, b) Then
>> MsgBox "Différence " & Cells(a, b).Address
>> End If
>> Next
>> Next
>> End Sub
>> '-----------------------------------
>>
>>
>>
>>
>> "GlamIs" a écrit dans le message de
>> news:
>>
>> > Bonjour a tous,
>> > J'ai un probleme lors de la comparaison entre deux feuilles qui
>> > contiennent
>> > les mêmes valeurs, la première par formule et la seconde directement
>> > par
>> > valeur.
>> >
>> > Je compare ces deux feuilles cellule par cellule via le code
>> > suivant:
>> >
>> > Code :
>> >
>> > For Each oCell In Firstsheet.UsedRange
>> > If oCell.Value <> SecondSheet.Range(oCell.Address).Value
>> > Then
>> > different = True
>> > MsgBox "Different sheets"
>> > Exit For
>> > End If
>> > Next oCell
>> > If Not different Then
>> > MsgBox "Identical sheets"
>> > End If
>> > En executant ce code, vba detecte une cellule qui ne contient pas la
>> > même
>> > valeur dans les deux feuilles.
>> > Et quand je fais differents tests pour comparer ces deux cellules
>> > j'obtiens
>> > ceci
>> > Code :
>> >
>> > ?ocell.Value
>> > 100
>> >
>> > ?SecondSheet.Range(ocell.Address ).Value
>> > 100
>> >
>> > ?TypeName(ocell.Value)
>> > Double
>> >
>> > ?TypeName(SecondSheet.Range(oCell.Address ).Value)
>> > Double
>> >
>> > ?oCell.Value = 100
>> > False
>> >
>> > ?oCell.Value = cstr(100)
>> > True
>> >
>> > ?SecondSheet.Range(oCell.Address).Value = 100
>> > True
>> >
>> > ?SecondSheet.Range(oCell.Address).Value = cstr(100)
>> > True
>> >
>> > ?oCell.Value = SecondSheet.Range(oCell.Address ).Value
>> > False
>> >
>> > Je rappelle que la premiere feuille contient des formules la
>> > secondes
>> > des
>> > valeurs.
>> > Avez-vous une idée de ce qui se passe?
>> > merci
>>
>>
>>
non les deux cellules ont le meme format:
?TypeName(ocell.Value)
Double
?TypeName(SecondSheet.Range(oCell.Address ).Value)
Double
et c'est ce format qui pose problème. Je m'explique:
Comme le format de mes cellules est Double, il doit bien avoir un chiffre
apres la virgule qui existe mais que Excel ne peut afficher (je sais que
l'affichage est limité en terme de bits!)
Quand je force le passage en entier, dans les formules de ma première
feuille, je n'obtient plus d'erreur et Excel est aussi content que moi ^^
Donc je peux dire que mon problème est résolu par une solution de
contournement!
"michdenis" wrote:
En principe, cela devrait fonctionner ...
Est-ce possible que tu aies des cellules avec des formats différents
(texte par exemple vs Standard)
Si certaines cellules contiennent du texte, la casse des caractères
compte.
Il doit y avoir quelque chose que tu nous dis pas ! ;-)
PS- Définir une plage avec UsedRange a des fins d'une boucle
n'est pas la meilleure façon de le faire !
"GlamIs" <GlamIs@discussions.microsoft.com> a écrit dans le message de
news:
7BE3CCA7-5C57-49C7-867E-264ADBC37999@microsoft.com...
> UA fait moi je n'est pas la main sur le code VBA, mais je peux changer
> les
> feuilles.
> Cependant je ne comprend pas pourquoi les deux valeurs ne sont pas
> identiques pourtant quand je fais des tests j'obtiens ceci:
> code:
>
> ?ocell.Value
> 100
> ?SecondSheet.Range(ocell.Address ).Value
> 100
> ?TypeName(ocell.Value)
> Double
> ?TypeName(SecondSheet.Range(oCell.Address ).Value)
> Double
>
>
>
> "michdenis" wrote:
>
>> Essaie quelque chose comme :
>>
>> '-----------------------------------
>> Sub Test()
>> Dim DerLig As Long, DerCol As Integer
>> Dim Adr As String, Tblo1, Tblo2
>> With Worksheets("Feuil1") ' Nom à déterminer
>> DerLig = .Cells.Find(What:="*", _
>> LookIn:=xlFormulas, _
>> SearchOrder:=xlByRows, _
>> SearchDirection:=xlPrevious).Row
>> DerCol = .Cells.Find(What:="*", _
>> LookIn:=xlFormulas, _
>> SearchOrder:=xlByColumns, _
>> SearchDirection:=xlPrevious).Column
>>
>> With .Range(.Range("A1"), .Cells(DerLig, DerCol))
>> Adr = .Address
>> Tblo1 = .Value
>> End With
>> End With
>>
>> With Worksheets("Feuil2") ' Nom à déterminer
>> Tblo2 = .Range(Adr).Value
>> End With
>>
>> For a = 1 To UBound(Tblo1, 1)
>> For b = 1 To UBound(Tblo1, 2)
>> If Tblo1(a, b) <> Tblo2(a, b) Then
>> MsgBox "Différence " & Cells(a, b).Address
>> End If
>> Next
>> Next
>> End Sub
>> '-----------------------------------
>>
>>
>>
>>
>> "GlamIs" <GlamIs@discussions.microsoft.com> a écrit dans le message de
>> news:
>> 77C36A52-CEE9-4C28-97D6-1B877ECC25C0@microsoft.com...
>> > Bonjour a tous,
>> > J'ai un probleme lors de la comparaison entre deux feuilles qui
>> > contiennent
>> > les mêmes valeurs, la première par formule et la seconde directement
>> > par
>> > valeur.
>> >
>> > Je compare ces deux feuilles cellule par cellule via le code
>> > suivant:
>> >
>> > Code :
>> >
>> > For Each oCell In Firstsheet.UsedRange
>> > If oCell.Value <> SecondSheet.Range(oCell.Address).Value
>> > Then
>> > different = True
>> > MsgBox "Different sheets"
>> > Exit For
>> > End If
>> > Next oCell
>> > If Not different Then
>> > MsgBox "Identical sheets"
>> > End If
>> > En executant ce code, vba detecte une cellule qui ne contient pas la
>> > même
>> > valeur dans les deux feuilles.
>> > Et quand je fais differents tests pour comparer ces deux cellules
>> > j'obtiens
>> > ceci
>> > Code :
>> >
>> > ?ocell.Value
>> > 100
>> >
>> > ?SecondSheet.Range(ocell.Address ).Value
>> > 100
>> >
>> > ?TypeName(ocell.Value)
>> > Double
>> >
>> > ?TypeName(SecondSheet.Range(oCell.Address ).Value)
>> > Double
>> >
>> > ?oCell.Value = 100
>> > False
>> >
>> > ?oCell.Value = cstr(100)
>> > True
>> >
>> > ?SecondSheet.Range(oCell.Address).Value = 100
>> > True
>> >
>> > ?SecondSheet.Range(oCell.Address).Value = cstr(100)
>> > True
>> >
>> > ?oCell.Value = SecondSheet.Range(oCell.Address ).Value
>> > False
>> >
>> > Je rappelle que la premiere feuille contient des formules la
>> > secondes
>> > des
>> > valeurs.
>> > Avez-vous une idée de ce qui se passe?
>> > merci
>>
>>
>>
non les deux cellules ont le meme format:?TypeName(ocell.Value)
Double
?TypeName(SecondSheet.Range(oCell.Address ).Value)
Double
et c'est ce format qui pose problème. Je m'explique:
Comme le format de mes cellules est Double, il doit bien avoir un chiffre
apres la virgule qui existe mais que Excel ne peut afficher (je sais que
l'affichage est limité en terme de bits!)
Quand je force le passage en entier, dans les formules de ma première
feuille, je n'obtient plus d'erreur et Excel est aussi content que moi ^^
Donc je peux dire que mon problème est résolu par une solution de
contournement!
"michdenis" wrote:En principe, cela devrait fonctionner ...
Est-ce possible que tu aies des cellules avec des formats différents
(texte par exemple vs Standard)
Si certaines cellules contiennent du texte, la casse des caractères
compte.
Il doit y avoir quelque chose que tu nous dis pas ! ;-)
PS- Définir une plage avec UsedRange a des fins d'une boucle
n'est pas la meilleure façon de le faire !
"GlamIs" a écrit dans le message de
news:
> UA fait moi je n'est pas la main sur le code VBA, mais je peux changer
> les
> feuilles.
> Cependant je ne comprend pas pourquoi les deux valeurs ne sont pas
> identiques pourtant quand je fais des tests j'obtiens ceci:
> code:
>
> ?ocell.Value
> 100
> ?SecondSheet.Range(ocell.Address ).Value
> 100
> ?TypeName(ocell.Value)
> Double
> ?TypeName(SecondSheet.Range(oCell.Address ).Value)
> Double
>
>
>
> "michdenis" wrote:
>
>> Essaie quelque chose comme :
>>
>> '-----------------------------------
>> Sub Test()
>> Dim DerLig As Long, DerCol As Integer
>> Dim Adr As String, Tblo1, Tblo2
>> With Worksheets("Feuil1") ' Nom à déterminer
>> DerLig = .Cells.Find(What:="*", _
>> LookIn:=xlFormulas, _
>> SearchOrder:=xlByRows, _
>> SearchDirection:=xlPrevious).Row
>> DerCol = .Cells.Find(What:="*", _
>> LookIn:=xlFormulas, _
>> SearchOrder:=xlByColumns, _
>> SearchDirection:=xlPrevious).Column
>>
>> With .Range(.Range("A1"), .Cells(DerLig, DerCol))
>> Adr = .Address
>> Tblo1 = .Value
>> End With
>> End With
>>
>> With Worksheets("Feuil2") ' Nom à déterminer
>> Tblo2 = .Range(Adr).Value
>> End With
>>
>> For a = 1 To UBound(Tblo1, 1)
>> For b = 1 To UBound(Tblo1, 2)
>> If Tblo1(a, b) <> Tblo2(a, b) Then
>> MsgBox "Différence " & Cells(a, b).Address
>> End If
>> Next
>> Next
>> End Sub
>> '-----------------------------------
>>
>>
>>
>>
>> "GlamIs" a écrit dans le message de
>> news:
>>
>> > Bonjour a tous,
>> > J'ai un probleme lors de la comparaison entre deux feuilles qui
>> > contiennent
>> > les mêmes valeurs, la première par formule et la seconde directement
>> > par
>> > valeur.
>> >
>> > Je compare ces deux feuilles cellule par cellule via le code
>> > suivant:
>> >
>> > Code :
>> >
>> > For Each oCell In Firstsheet.UsedRange
>> > If oCell.Value <> SecondSheet.Range(oCell.Address).Value
>> > Then
>> > different = True
>> > MsgBox "Different sheets"
>> > Exit For
>> > End If
>> > Next oCell
>> > If Not different Then
>> > MsgBox "Identical sheets"
>> > End If
>> > En executant ce code, vba detecte une cellule qui ne contient pas la
>> > même
>> > valeur dans les deux feuilles.
>> > Et quand je fais differents tests pour comparer ces deux cellules
>> > j'obtiens
>> > ceci
>> > Code :
>> >
>> > ?ocell.Value
>> > 100
>> >
>> > ?SecondSheet.Range(ocell.Address ).Value
>> > 100
>> >
>> > ?TypeName(ocell.Value)
>> > Double
>> >
>> > ?TypeName(SecondSheet.Range(oCell.Address ).Value)
>> > Double
>> >
>> > ?oCell.Value = 100
>> > False
>> >
>> > ?oCell.Value = cstr(100)
>> > True
>> >
>> > ?SecondSheet.Range(oCell.Address).Value = 100
>> > True
>> >
>> > ?SecondSheet.Range(oCell.Address).Value = cstr(100)
>> > True
>> >
>> > ?oCell.Value = SecondSheet.Range(oCell.Address ).Value
>> > False
>> >
>> > Je rappelle que la premiere feuille contient des formules la
>> > secondes
>> > des
>> > valeurs.
>> > Avez-vous une idée de ce qui se passe?
>> > merci
>>
>>
>>