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

Comment écrire Different que la valeur de la activecell.offset

10 réponses
Avatar
Alex
Bonsoir =E0 tous,

Comment =E9crire cette ligne de commande :

Range("BDD!EF2").Value =3D ActiveCell.Offset(0, 100).Value

EN

Range("BDD!EF2").Value =3D <> ActiveCell.Offset(0, 100).Value

Merci pour votre aide.
Cordialement.
Alex

10 réponses

Avatar
MichD
Bonjour,

Ce que tu demandes est impossible.

Un élément ne peut pas être en même temps égal à un deuxième élément
et en même temps être égal à ce deuxième élément.

Tu aurais avantage à expliquer ce que tu veux faire...




MichD
--------------------------------------------
"Alex" a écrit dans le message de groupe de discussion :


Bonsoir à tous,

Comment écrire cette ligne de commande :

Range("BDD!EF2").Value = ActiveCell.Offset(0, 100).Value

EN

Range("BDD!EF2").Value = <> ActiveCell.Offset(0, 100).Value

Merci pour votre aide.
Cordialement.
Alex
Avatar
isabelle
salut Alex,

pas sur d'avoir compris la demande,

peut être,

Select Case Range("BDD!EF2").Value
Case Is = ActiveCell.Offset(0, 100).Value: MsgBox "egal"
Case Is <> ActiveCell.Offset(0, 100).Value: MsgBox "different"
End Select

--
isabelle



Le 2011-09-15 16:03, Alex a écrit :
Bonsoir à tous,

Comment écrire cette ligne de commande :

Range("BDD!EF2").Value = ActiveCell.Offset(0, 100).Value

EN

Range("BDD!EF2").Value =<> ActiveCell.Offset(0, 100).Value

Merci pour votre aide.
Cordialement.
Alex
Avatar
Alex
Bonjour à tous,

Merci de vos réponses.
En fait, c'est pour pour un formulaire ou je consulte une ligne de ma
BDD. Dans ce formulaire, il y a une listbox qui fait appaître les
d'autres lignes qui ont le même numero de regroupement de dossier,
mais dans ce listbox apparait aussi la ligne qui est en consultation
puisqu'elle porte elle aussi un numéro de regroupement de dossier.
Donc je souhaitais ajouter un "filtre" supplémentaire, en disant que
je voulais toutes les fiches portant le meme numero de regroupement de
dossier, mais en supprimant la ligne "active" de mon formulaire qui
porte un numéro dossier. La référence regroupement de dossier et
dossier sont deux données différentes, et elles sont toutes les deux
numériques.
J'espere que ces explications pourront permettre de trouver une
solution.
Avec mes remerciements.
Cordialement.
Alex
Avatar
MichD
A ) il s'agit bien d'un contrôle "Listbox" et non d'un combobox ?

B ) Tu remplis probablement le listbox à partir d'information dans une plage
de cellules d'une feuille de ton classeur en utilisant la propriété "RowSource"
du listBox. Il y a d'autres alternatives pour remplir le "Listbox".

C ) À partir de l'information que tu as donnée, il est très difficile de te donner
une "recette" toute faite pour obtenir le résultat escompté.

Peux-tu publier ton classeur en utilisant l'adresse suivante "cjoint.com" et nous
retourner ici l'adresse que tu auras obtenue? Publie seulement ce qui est pertinent
à la compréhension de l'organisation de tes données et de ton formulaire. Tu peux
profiter de l'occasion pour donner des détails sur la manière que tu veux exécuter
les manipulations.



MichD
--------------------------------------------
"Alex" a écrit dans le message de groupe de discussion :


Bonjour à tous,

Merci de vos réponses.
En fait, c'est pour pour un formulaire ou je consulte une ligne de ma
BDD. Dans ce formulaire, il y a une listbox qui fait appaître les
d'autres lignes qui ont le même numero de regroupement de dossier,
mais dans ce listbox apparait aussi la ligne qui est en consultation
puisqu'elle porte elle aussi un numéro de regroupement de dossier.
Donc je souhaitais ajouter un "filtre" supplémentaire, en disant que
je voulais toutes les fiches portant le meme numero de regroupement de
dossier, mais en supprimant la ligne "active" de mon formulaire qui
porte un numéro dossier. La référence regroupement de dossier et
dossier sont deux données différentes, et elles sont toutes les deux
numériques.
J'espere que ces explications pourront permettre de trouver une
solution.
Avec mes remerciements.
Cordialement.
Alex
Avatar
Alex
Bonjour Michel,

Merci pour ta réponse et ta proposition de deposer le fichier sur
cijoint.fr

voici le numéro de dossier :

http://www.cijoint.fr/cjlink.php?file=cj201109/cij2Hnb8YC.xls

J'ai ajouté un onglet MESSAGE pour te donner des précisions.

Encore un grand merci.
Cordialement.
Alex
Avatar
MichD
D'abord une observation dans ton code dudit formulaire :
Merci, tu as fait une bonne présentation de ta problématique...

Sauf que :

1-
Cette ligne de code :
Range("BDD!A1:Base").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("BDD!Criteres"), CopyTorange:=Range( _
"BDD!Extraction"), unique:úlse

A ) Range("BDD!A1:Base") ->> ceci devrait être suffisant : Range("Base")
B ) Je ne vois pas un "NOM" nommé "Extraction" dans ton classeur. Le
"NOM" le plus près est "Extraire"

En conséquence, lorsque j'ouvre le formulaire, cette ligne de code plante!
Où est cette zone "Extraction" ?


2- J'ai bien vu où tu disais rencontrer un problème :
'**************************
'* ICI POUR MON PS *
'**************************

Me.LOY = IsNumeric(Me.LOY)

Ma question : Ce contrôle devait avoir quelle valeur de ton tableau "Base"
Comment veux-tu déterminer sa valeur ?




MichD
--------------------------------------------
"Alex" a écrit dans le message de groupe de discussion :


Bonjour Michel,

Merci pour ta réponse et ta proposition de deposer le fichier sur
cijoint.fr

voici le numéro de dossier :

http://www.cijoint.fr/cjlink.php?file=cj201109/cij2Hnb8YC.xls

J'ai ajouté un onglet MESSAGE pour te donner des précisions.

Encore un grand merci.
Cordialement.
Alex
Avatar
Alex
Re,

pour te répondre, je reprends tes points par points :

1A : Je procède à la correction.
1B : mon nom Extraction est defini pour la plage CY4 à EF4 (je
comprends pas moi je le vois. j'ai nommé cette plage en faisant
Insertion/Nom/Définir).

2 : Pour ma textbox LOY (Loyer Annuel sur le formulaire MODIF en page
1), j'ai paramétré le textbox comme ceci :

On Error Resume Next
valeur = Replace(LOY.text, ".", ",")
If IsNumeric(Me.LOY) Then
Me.LOY = Format(Me.LOY, "#,##0.00")
Else
MsgBox "Cette saisie n'est pas une valeur numérique correcte,
veuillez saisir les sommes décimales avec une ,"
End If

afin que le nombre puisse etre reconnu en nombre sur ma feuille lors
de la validation "Enregistrer Modification" en appliquant Cells(i,
30).value = ME.LOY *1

mais la, la donnée est rappatrie de la feuille dans le textbox, la
valeur en format numérique sur la feuille n'est pas rappatrié dans le
textbox en numérique mais en texte (du coup, on est obligé de retaper
le montant pour qu'il figure en nombre)
je sais pas comment écrire :

La valeur de la cellule ActiveCell.Offset(0, 30).Value est numérique
alors me.LOY est numérique

J'espère que tu vas comprendre ce que je viens de tenter de
t'expliquer ;-)

Merci encore de ton aide, et reste à ta dispo si tu veux plus de
précision.

Alex
Avatar
MichD
Selon que le contenu de la cellule ActiveCell.Offset(0, 30).Value
soit du texte, du numérique (monétaire), une date, le textbox va
adopter le format qu'il lui est défini.

P.S. Au format monétaire, j'ai ajouté le symbole "€" au format. Si tu dois
utiliser cette information par la suite pour effectuer des calculs, ce n'est pas
une bonne idée, car pour ces calculs, tu devras extraire seulement la partie
numérique du TextBox à cet effet. À toi de choisir

'--------------------------------------
If Not IsDate(ActiveCell.Offset(0, 30).Value) Then
If Application.WorksheetFunction.IsNumber(ActiveCell.Offset(0, 30).Value) Then
Me.TextBox1.Value = Format(ActiveCell.Offset(0, 30).Value, "# ##0.00 €")
Else
Me.TextBox1.Value = ActiveCell.Offset(0, 30).Value
End If
Else
Me.TextBox1.Value = Format(ActiveCell.Offset(0, 30).Value, "dd/mm/yy")
End If
'--------------------------------------


MichD
--------------------------------------------
"Alex" a écrit dans le message de groupe de discussion :


Re,

pour te répondre, je reprends tes points par points :

1A : Je procède à la correction.
1B : mon nom Extraction est defini pour la plage CY4 à EF4 (je
comprends pas moi je le vois. j'ai nommé cette plage en faisant
Insertion/Nom/Définir).

2 : Pour ma textbox LOY (Loyer Annuel sur le formulaire MODIF en page
1), j'ai paramétré le textbox comme ceci :

On Error Resume Next
valeur = Replace(LOY.text, ".", ",")
If IsNumeric(Me.LOY) Then
Me.LOY = Format(Me.LOY, "#,##0.00")
Else
MsgBox "Cette saisie n'est pas une valeur numérique correcte,
veuillez saisir les sommes décimales avec une ,"
End If

afin que le nombre puisse etre reconnu en nombre sur ma feuille lors
de la validation "Enregistrer Modification" en appliquant Cells(i,
30).value = ME.LOY *1

mais la, la donnée est rappatrie de la feuille dans le textbox, la
valeur en format numérique sur la feuille n'est pas rappatrié dans le
textbox en numérique mais en texte (du coup, on est obligé de retaper
le montant pour qu'il figure en nombre)
je sais pas comment écrire :

La valeur de la cellule ActiveCell.Offset(0, 30).Value est numérique
alors me.LOY est numérique

J'espère que tu vas comprendre ce que je viens de tenter de
t'expliquer ;-)

Merci encore de ton aide, et reste à ta dispo si tu veux plus de
précision.

Alex
Avatar
Alex
Merci pour ta réponse de format de textbox.
Pour le second point, je vais laissé cela comme ca.
Bien cordialement.
Alex
Avatar
MichD
| afin que le nombre puisse etre reconnu en nombre sur ma feuille lors
| de la validation "Enregistrer Modification" en appliquant Cells(i,
| 30).value = ME.LOY *1

Un contrôle textbox comme son nom l'indique contient toujours du texte
même lorsqu'il contient une donnée numérique.
Lorsque l'on désire travailler avec la valeur numérique du TextBox, il faut
transformer ce contenu "Texte" en contenu numérique. Pour ce faire, il
existe les fonctions de conversions d'Excel comme
Cint(), Clng(), Cdbl(), etc. voir dans l'aide d'Excel sous fonctions de conversion.
Tu peux y ajouter la fonction "Format()" et "isNumreric()"

Toutes ces fonctions requièrent LE MÊME SÉPARATEUR DÉCIMAL que celui défini
dans le panneau de configuration. Cela signifie que tu dois passer à la fonction
un nombre dont le séparateur décimal contient la virgule si celle-ci est le séparateur
décimal défini dans le panneau de configuration de Windows.

Tu as 2 possibilités :

A ) Lorsque tu insères une valeur numérique dans un TextBox, tu t'assures que le
séparateur décimal est le même que dans le panneau de configuration.
Cette méthode va toujours te donner un contenu de cellule qui est conforme
aux éléments du panneau de configuration

'------------------------------
With Worksheets("Feuil1")
With .Range("A1")
'Si le contenu de la cellule n'est pas une date
If Not IsDate(.Value) = True Then
'Si le contenu du de la cellule est numérique
If Application.IsNumber(.Value) = True Then
Me.TextBox1 = Replace(.Value, ",", Sep)
'Tu peux ajouter une ligne pour formater
'le textbox si tu le désires en utilisant Format()
Else
'Si le contenu de la cellule est Text
Me.TextBox1 = .Value
End If
Else
'Si c'est une date
'Fonction Cdate() applique le format court défini
'dans le panneau de configuration
Me.TextBox1 = CDate(.Value)
End If
End With
End With
End Sub
'------------------------------

L'autre possibilité, si tu entres dans les textbox, des données avec un "POINT"
Tu devras faire la substitution du point pour le séparateur décimal dans le
panneau de configuration avant d'utiliser une fonction de conversion pour
transformer le texte en numérique.



MichD
--------------------------------------------
"Alex" a écrit dans le message de groupe de discussion :


Merci pour ta réponse de format de textbox.
Pour le second point, je vais laissé cela comme ca.
Bien cordialement.
Alex