OVH Cloud OVH Cloud

Pb de vérif

1 réponse
Avatar
Richard G.
Bonjour =E0 tous,


J'ai cr=E9=E9e un userform qui permet =E0 l'utilisateur de comparer deux
plages cellule par cellule pour voir si elles sont identiques. Une fois

les plages s=E9lectionn=E9es, la macro ins=E8re une ou plusieurs colonnes
(selon la largeur des plages) =E0 gauche de la premi=E8re plage. Elle
ins=E8re ensuite une formule SI plage1=3Dplage2 alors patatipatata....
Jusque l=E0 c'est bon.
Sauf que les v=E9rif sont syst=E9matiquement situ=E9es en colonne A. C'est

l=E0 le probl=E8me : comment faire pour ins=E9rer les v=E9rif en C23 si les

plages =E0 comparer sont D23 et F23 c'est-=E0-dire sur la m=EAme ligne que

la cellule en haut =E0 gauche de la premi=E8re plage =E0 comparer ?


Voici mon code :


Private Sub CommandButton1_Click()


'Macro pour comparer deux s=E9ries de donn=E9es terme =E0 terme


Dim Plage1 As String
Plage1 =3D UserForm7.RefEdit1.Value
Dim Plage2 As String
Plage2 =3D UserForm7.RefEdit2.Value


'Insertion de la ou les colonne(s) de v=E9rification


Dim i As Integer, nbcol As Integer, nblig As Integer
nbcol =3D Range(UserForm7.RefEdit1.Value).Columns.Count
nblig =3D Range(UserForm7.RefEdit1.Value).Rows.Count
For i =3D 1 To nbcol
Range(UserForm7.RefEdit1.Value).Range("A1").EntireColumn.Insert
Next


Range(UserForm7.RefEdit1.Value).Range("A1").Offset(, -nbcol).Select
ActiveCell.Offset(, nbcol).Select
ActiveCell.Resize(nblig, nbcol).Select


' Verifie la concordance des 2 s=E9ries de donn=E9es terme =E0 terme


Dim Verif1 As Range, Verif2 As Range
Set Verif1 =3D Range(UserForm7.RefEdit1.Value)
Set Verif2 =3D Range(UserForm7.RefEdit2.Value)


For y =3D 1 To nblig
For x =3D 1 To nbcol
Cells(y, x).Formula =3D "=3Dif(" & Verif1.Resize(1, 1).Offset(y - 1, x
- 1).Address _
& "=3D" & Verif2.Resize(1, 1).Offset(y - 1, x - 1).Address _
& ",""Cool !"",""WRONG !"")"
If Cells(y, x).Value =3D "WRONG !" Then Cells(y, x).Font.Bold =3D True
If Cells(y, x).Value =3D "WRONG !" Then Cells(y, x).Font.Italic =3D True
If Cells(y, x).Value =3D "WRONG !" Then Cells(y, x).Font.ColorIndex =3D 3
Next x
Next y


'D=E9chargement du Userform


Unload Me=20
UserForm7.Hide=20


End Sub=20


Merci par avance !!!=20


A+

1 réponse

Avatar
JLuc
*Bonjour Richard G.*,


Private Sub CommandButton1_Click()


'Macro pour comparer deux séries de données terme à terme


Dim Plage1 As String
Plage1 = UserForm7.RefEdit1.Value
Dim Plage2 As String
Plage2 = UserForm7.RefEdit2.Value


'Insertion de la ou les colonne(s) de vérification


lig1 = Plage1.Row
col1 = Plage1.Column

Dim i As Integer, nbcol As Integer, nblig As Integer
nbcol = Range(UserForm7.RefEdit1.Value).Columns.Count
nblig = Range(UserForm7.RefEdit1.Value).Rows.Count
For i = 1 To nbcol
Range(UserForm7.RefEdit1.Value).Range("A1").EntireColumn.Insert
Essaie : .Cells(lig1, col1)

Pas garanti, j'ai pas essayer ! :oÞ mais si tu prends Range("A1"), tu
aura toujours l'insertion avant la colonne A (a mon avis) alors que
Cells(lig1, col1) devrait prendre le premiere cellule de la plage

Next


Range(UserForm7.RefEdit1.Value).Range("A1").Offset(, -nbcol).Select
ActiveCell.Offset(, nbcol).Select
ActiveCell.Resize(nblig, nbcol).Select


' Verifie la concordance des 2 séries de données terme à terme


Dim Verif1 As Range, Verif2 As Range
Set Verif1 = Range(UserForm7.RefEdit1.Value)
Set Verif2 = Range(UserForm7.RefEdit2.Value)


For y = 1 To nblig
For x = 1 To nbcol
Cells(y, x).Formula = "=if(" & Verif1.Resize(1, 1).Offset(y - 1, x
- 1).Address _
& "=" & Verif2.Resize(1, 1).Offset(y - 1, x - 1).Address _
& ",""Cool !"",""WRONG !"")"
If Cells(y, x).Value = "WRONG !" Then Cells(y, x).Font.Bold = True
If Cells(y, x).Value = "WRONG !" Then Cells(y, x).Font.Italic = True
If Cells(y, x).Value = "WRONG !" Then Cells(y, x).Font.ColorIndex = 3
Next x
Next y


'Déchargement du Userform


Unload Me
UserForm7.Hide


End Sub


Merci par avance !!!


A+



--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/
C:Program FilesMicrosoft OfficeOffice1036VBALIST.XLS