OVH Cloud OVH Cloud

Userform et formule =si

5 réponses
Avatar
Richard G.
Bonsoir,

J'ai un userform avec 2 refedit et un bouton de commande. Je cherche =E0
v=E9rifier la concordance de la cellule ou plage de cellules 1, saisie
par l'utilisateur dans le refedit1 avec la cellule ou plage de cellules
1, saisie par l'utilisateur dans le refedit2.

L'id=E9e c'est d'ins=E9rer une colonne A et d'inscrire une formule du
type =3Dsi(refedit1=3Drefedit2;"vrai").

=E7a se complique puisuqe bien s=FBr on peux s=E9lectioner non pas
seulement une celule mais une plage de celulle =E0 comparer avec une
autre plage.

Voil=E0 le code. =E7a bloque au moment de l'inscription de la formule de
comparaison. Je n'arrive pas =E0 r=E9cup=E9rer l'adresse des cellules
s=E9lectionn=E9es dans le userform.


Private Sub CommandButton1_Click()

Dim plage As String
plage =3D Range(UserForm5.RefEdit1.Value)

Dim plage2 As String
plage2 =3D Range(UserForm5.RefEdit2.Value)


' Affiche un message d'erreur si aucune s=E9lection de cellule
If plage =3D "" Or plage2 =3D "" Then
MsgBox "T'as rien s=E9lectionn=E9, recommence !"
Exit Sub
End If

'Insertion colonne

Range("A1").Select
Selection.EntireColumn.Insert

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

Range("A1").FormulaLocal =3D "=3DSI("plage"=3D"plage2";""cool !"";""WRO=
NG
!"")"


'D=E9chargement du Userform

Unload Me

End Sub


Merci par avance pour vos suggestions !!=20

A+

5 réponses

Avatar
Daniel
Bonsoir.
Essaie :
Range("A1").Formula = ("=if(" & RefEdit1.Value & _
" = " & RefEdit2.Value & ",""cool"",""WRONG !"")")
Cordialement.
Daniel
"Richard G." a écrit dans le message de news:

Bonsoir,

J'ai un userform avec 2 refedit et un bouton de commande. Je cherche à
vérifier la concordance de la cellule ou plage de cellules 1, saisie
par l'utilisateur dans le refedit1 avec la cellule ou plage de cellules
1, saisie par l'utilisateur dans le refedit2.

L'idée c'est d'insérer une colonne A et d'inscrire une formule du
type =si(refedit1=refedit2;"vrai").

ça se complique puisuqe bien sûr on peux sélectioner non pas
seulement une celule mais une plage de celulle à comparer avec une
autre plage.

Voilà le code. ça bloque au moment de l'inscription de la formule de
comparaison. Je n'arrive pas à récupérer l'adresse des cellules
sélectionnées dans le userform.


Private Sub CommandButton1_Click()

Dim plage As String
plage = Range(UserForm5.RefEdit1.Value)

Dim plage2 As String
plage2 = Range(UserForm5.RefEdit2.Value)


' Affiche un message d'erreur si aucune sélection de cellule
If plage = "" Or plage2 = "" Then
MsgBox "T'as rien sélectionné, recommence !"
Exit Sub
End If

'Insertion colonne

Range("A1").Select
Selection.EntireColumn.Insert

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

Range("A1").FormulaLocal = "=SI("plage"="plage2";""cool !"";""WRONG
!"")"


'Déchargement du Userform

Unload Me

End Sub


Merci par avance pour vos suggestions !!

A+
Avatar
michdenis
Bonjour Richard,

Qu'est-ce qui se passe si les plages de cellules à comparer comportent plusieurs colonnes, la formule doit aussi s'inscrire en
colonne A:A ?

Et dans le cas où les plages sélectionnées ne sont pas d'égales grandeur ou de même dimension , comment fais-tu la comparaison ?


Salutations!



"Richard G." a écrit dans le message de news:
Bonsoir,

J'ai un userform avec 2 refedit et un bouton de commande. Je cherche à
vérifier la concordance de la cellule ou plage de cellules 1, saisie
par l'utilisateur dans le refedit1 avec la cellule ou plage de cellules
1, saisie par l'utilisateur dans le refedit2.

L'idée c'est d'insérer une colonne A et d'inscrire une formule du
type =si(refedit1=refedit2;"vrai").

ça se complique puisuqe bien sûr on peux sélectioner non pas
seulement une celule mais une plage de celulle à comparer avec une
autre plage.

Voilà le code. ça bloque au moment de l'inscription de la formule de
comparaison. Je n'arrive pas à récupérer l'adresse des cellules
sélectionnées dans le userform.


Private Sub CommandButton1_Click()

Dim plage As String
plage = Range(UserForm5.RefEdit1.Value)

Dim plage2 As String
plage2 = Range(UserForm5.RefEdit2.Value)


' Affiche un message d'erreur si aucune sélection de cellule
If plage = "" Or plage2 = "" Then
MsgBox "T'as rien sélectionné, recommence !"
Exit Sub
End If

'Insertion colonne

Range("A1").Select
Selection.EntireColumn.Insert

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

Range("A1").FormulaLocal = "=SI("plage"="plage2";""cool !"";""WRONG
!"")"


'Déchargement du Userform

Unload Me

End Sub


Merci par avance pour vos suggestions !!

A+
Avatar
Richard G.
Bonjour,

Merci Daniel, c'est bien ça. Sauf que quand j'insère la colonne A
avec la formule, l'adresse sélectionée dans les refedit ne se décale
pas automatiquement. Du coup, tout est systématiquement faux. Je vais
chercher un moyen de décaler la colonne de l'adresse des refedit.

Michdenis, effectivement il faut que je trouve un moyen pour bloquer
les plages sélectionnées si elles sont de longueur différentes. Plus
compliqué encore, il faudrait que je puisse insérer autant de
colonnes de vérification que de colonnes sélectionnées dans les
refedit.
Si vous avez des idées, n'hésitez pas.

Merci par avance.
A+
Avatar
Richard G.
Pour bloquer les plages sélectionnées si elles sont de longueur
différentes, j'ai ajouté :

' Affiche un message d'erreur si les sélections de cellules ne sont
pas de taille identique

Dim NbCell As Long
NbCell = Range(RefEdit1.Value).Cells.Count

Dim NbCell2 As Long
NbCell = Range(RefEdit2.Value).Cells.Count

If NbCell <> NbCell2 Then
MsgBox "Les 2 séries n'ont pas la même taille, recommence !"
Exit Sub
End If
Avatar
Daniel
Bonsoir.
Le code suivant fonctionne pour des plages contigües :

Private Sub CommandButton1_Click()
Dim Plage1 As Range, Plage2 As Range, Col As Integer
Set Plage1 = Range(RefEdit1.Value)
Set Plage2 = Range(RefEdit2.Value)
Unload Me
If Plage1.Rows.Count <> Plage2.Rows.Count _
Or Plage1.Columns.Count <> Plage2.Columns.Count Then Exit Sub
Range("A1").Resize(1, Plage1.Columns.Count).EntireColumn.Insert
For y = 1 To Plage1.Rows.Count
For x = 1 To Plage1.Columns.Count
Cells(y, x).Formula = _
"=if(" & Plage1.Resize(1, 1).Offset(y - 1, x - 1).Address & "="
& Plage2.Resize(1, 1).Offset(y - 1, x - 1).Address _
& ",""cool"",""WRONG !"")"
Next x
Next y
End Sub

Cordialement.
Daniel
"Richard G." a écrit dans le message de news:

Pour bloquer les plages sélectionnées si elles sont de longueur
différentes, j'ai ajouté :

' Affiche un message d'erreur si les sélections de cellules ne sont
pas de taille identique

Dim NbCell As Long
NbCell = Range(RefEdit1.Value).Cells.Count

Dim NbCell2 As Long
NbCell = Range(RefEdit2.Value).Cells.Count

If NbCell <> NbCell2 Then
MsgBox "Les 2 séries n'ont pas la même taille, recommence !"
Exit Sub
End If