Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
LaurentC
Oups, je viens de relire mon poste, je complète ma question ... désolé pour le bruit :-(
Je voudrai ajouter un test Í mon SumProduct pour savoir si dans la colonne TblOpérations[Soldée], il y une adresse de cellule valide. Dans cette colonne [Soldée], il y a au choix : l'adresse d'une cellule (par exemple P139), un nombre ou rien.
Il faut aussi que la ligne analysée par sumproduct soit plus haut dans le tableau que l'adresse de ligne P139 ... pas certain d'être super clair :-( un truc genre ...*(isAdresseAuDessus(TblOpérations[Soldée]))*... Si dans [Soldée] il y a P139, la condition est valide si c'est une des lignes de 138 Í 1. @+Laurent
Oups, je viens de relire mon poste, je complète ma question ... désolé
pour le bruit :-(
Je voudrai ajouter un test Í mon SumProduct pour savoir si dans la
colonne TblOpérations[Soldée], il y une adresse de cellule valide.
Dans cette colonne [Soldée], il y a au choix : l'adresse d'une
cellule (par exemple P139), un nombre ou rien.
Il faut aussi que la ligne analysée par sumproduct soit plus haut dans
le tableau que l'adresse de ligne P139 ... pas certain d'être super
clair :-(
un truc genre
...*(isAdresseAuDessus(TblOpérations[Soldée]))*...
Si dans [Soldée] il y a P139, la condition est valide si c'est une des
lignes de 138 Í 1.
Oups, je viens de relire mon poste, je complète ma question ... désolé pour le bruit :-(
Je voudrai ajouter un test Í mon SumProduct pour savoir si dans la colonne TblOpérations[Soldée], il y une adresse de cellule valide. Dans cette colonne [Soldée], il y a au choix : l'adresse d'une cellule (par exemple P139), un nombre ou rien.
Il faut aussi que la ligne analysée par sumproduct soit plus haut dans le tableau que l'adresse de ligne P139 ... pas certain d'être super clair :-( un truc genre ...*(isAdresseAuDessus(TblOpérations[Soldée]))*... Si dans [Soldée] il y a P139, la condition est valide si c'est une des lignes de 138 Í 1. @+Laurent
MichD
Le 18/05/22 Í 15:47, LaurentC a écrit :
Bonjour Í tous J'ai un tableau structuré nommé TblOpérations avec différentes colonnes : NomValeur, Date, Qté, PrixUnit, Frais, Soldée, ... Au cours d'un code, je créer une variable texte pour préparer la formule que je mettrai dans un evaluate(). TempText = "=SumProduct((TblOpérations[NomValeur]=""" & LaValeur & """)*(TblOpérations[Date]<=""" & LaDate * 1 & """) " & _ "*(TblOpérations[Qté]*TblOpérations[PrixUnit]+TblOpérations[Frais]))" Â Â MsgBox TempText Je voudrai ajouter un test Í mon SumProduct pour savoir si dans la colonne TblOpérations[Soldée], il y une adresse de cellule valide. Dans cette colonne [Soldée], il y a au choix : l'adresse d'une cellule (par exemple P139), un nombre ou rien. j'aurai aimé un truc genre ...*(isaddress(TblOpérations[Soldée]))*... Comment puis je faire ? Merci pour votre aide. @+Laurent
Bonjour, Je ne suis pas sÍ»r d'avoir compris le sens de cette phrase : Si dans [Soldée] il y a P139, la condition est valide si c'est une des lignes de 138 Í 1. Si la seule adresse valide et "P139", tu n'as qu'Í ajouter une condition au SumProd. Je n'ai pas testé.. '------------------------------------ Sub test() Dim Adr As String Adr = "P139" TempText = "=SumProduct(TblOpérations[NomValeur]=""" & Adr & _ """)*(TblOpérations[NomValeur]=""" & LaValeur & _ """)*(TblOpérations[Date]<=""" & LaDate * 1 & """) " & _ "*(TblOpérations[Qté]*TblOpérations[PrixUnit]+TblOpérations[Frais]))" MsgBox TempText End Sub '------------------------------------ MichD
Le 18/05/22 Í 15:47, LaurentC a écrit :
Bonjour Í tous
J'ai un tableau structuré nommé TblOpérations avec différentes colonnes
: NomValeur, Date, Qté, PrixUnit, Frais, Soldée, ...
Au cours d'un code, je créer une variable texte pour préparer la formule
que je mettrai dans un evaluate().
Je voudrai ajouter un test Í mon SumProduct pour savoir si dans la
colonne TblOpérations[Soldée], il y une adresse de cellule valide.
Dans cette colonne [Soldée], il y a au choix : l'adresse d'une cellule
(par exemple P139), un nombre ou rien.
j'aurai aimé un truc genre
...*(isaddress(TblOpérations[Soldée]))*...
Comment puis je faire ?
Merci pour votre aide.
@+Laurent
Bonjour,
Je ne suis pas sͻr d'avoir compris le sens de cette phrase :
Si dans [Soldée] il y a P139, la condition est valide si c'est une des
lignes de 138 Í 1.
Si la seule adresse valide et "P139", tu n'as qu'Í ajouter une condition
au SumProd. Je n'ai pas testé..
Bonjour Í tous J'ai un tableau structuré nommé TblOpérations avec différentes colonnes : NomValeur, Date, Qté, PrixUnit, Frais, Soldée, ... Au cours d'un code, je créer une variable texte pour préparer la formule que je mettrai dans un evaluate(). TempText = "=SumProduct((TblOpérations[NomValeur]=""" & LaValeur & """)*(TblOpérations[Date]<=""" & LaDate * 1 & """) " & _ "*(TblOpérations[Qté]*TblOpérations[PrixUnit]+TblOpérations[Frais]))" Â Â MsgBox TempText Je voudrai ajouter un test Í mon SumProduct pour savoir si dans la colonne TblOpérations[Soldée], il y une adresse de cellule valide. Dans cette colonne [Soldée], il y a au choix : l'adresse d'une cellule (par exemple P139), un nombre ou rien. j'aurai aimé un truc genre ...*(isaddress(TblOpérations[Soldée]))*... Comment puis je faire ? Merci pour votre aide. @+Laurent
Bonjour, Je ne suis pas sÍ»r d'avoir compris le sens de cette phrase : Si dans [Soldée] il y a P139, la condition est valide si c'est une des lignes de 138 Í 1. Si la seule adresse valide et "P139", tu n'as qu'Í ajouter une condition au SumProd. Je n'ai pas testé.. '------------------------------------ Sub test() Dim Adr As String Adr = "P139" TempText = "=SumProduct(TblOpérations[NomValeur]=""" & Adr & _ """)*(TblOpérations[NomValeur]=""" & LaValeur & _ """)*(TblOpérations[Date]<=""" & LaDate * 1 & """) " & _ "*(TblOpérations[Qté]*TblOpérations[PrixUnit]+TblOpérations[Frais]))" MsgBox TempText End Sub '------------------------------------ MichD
LaurentC
Bonjour MichD
Je ne suis pas sͻr d'avoir compris le sens de cette phrase :
Désolé de ne pas avoir été clair, je modfie ma question. Comment faire une function() qui renverrai 0 ou 1 (vrai ou faux) en fonction du contenu d'une cellule envoyé en argument, pour savoir si c'est une adresse de cellule ou pas ? La cellule qui sera envoyée en tant qu'argument contient soit rien, soit un nombre soit une adresse (par exemple P139). Je pense que je cherche un truc du genre : function EstAdresse(LaCellule as range) as boolean if not isnothing(LaCellule) then EstAdresse = true else EstAdresse = false end if Merci @+Laurent
Bonjour MichD
Je ne suis pas sͻr d'avoir compris le sens de cette phrase :
Désolé de ne pas avoir été clair, je modfie ma question.
Comment faire une function() qui renverrai 0 ou 1 (vrai ou faux) en
fonction du contenu d'une cellule envoyé en argument, pour savoir si
c'est une adresse de cellule ou pas ?
La cellule qui sera envoyée en tant qu'argument contient soit rien,
soit un nombre soit une adresse (par exemple P139).
Je pense que je cherche un truc du genre :
function EstAdresse(LaCellule as range) as boolean
if not isnothing(LaCellule) then
EstAdresse = true
else
EstAdresse = false
end if
Je ne suis pas sͻr d'avoir compris le sens de cette phrase :
Désolé de ne pas avoir été clair, je modfie ma question. Comment faire une function() qui renverrai 0 ou 1 (vrai ou faux) en fonction du contenu d'une cellule envoyé en argument, pour savoir si c'est une adresse de cellule ou pas ? La cellule qui sera envoyée en tant qu'argument contient soit rien, soit un nombre soit une adresse (par exemple P139). Je pense que je cherche un truc du genre : function EstAdresse(LaCellule as range) as boolean if not isnothing(LaCellule) then EstAdresse = true else EstAdresse = false end if Merci @+Laurent
LaurentC
Salut J'en suis lÍ Sub testEstAdresse() MsgBox EstAdresse(ActiveCell.Text) End Sub Function EstAdresse(LaCellule) If Not Range(LaCellule) Is Nothing Then EstAdresse = True Else EstAdresse = False End If End Function Je sélectionne une cellule est lance la sub. Si la cellule contient une adresse, ça me renvoie vrai, cool. Par contre j'ai une erreur si la cellule contient un nombre ou est vide. Comment gérer cette erreur ? Merci pour votre aide @+Laurent
Salut
J'en suis lÍ
Sub testEstAdresse()
MsgBox EstAdresse(ActiveCell.Text)
End Sub
Function EstAdresse(LaCellule)
If Not Range(LaCellule) Is Nothing Then
EstAdresse = True
Else
EstAdresse = False
End If
End Function
Je sélectionne une cellule est lance la sub.
Si la cellule contient une adresse, ça me renvoie vrai, cool.
Par contre j'ai une erreur si la cellule contient un nombre ou est
vide.
Salut J'en suis lÍ Sub testEstAdresse() MsgBox EstAdresse(ActiveCell.Text) End Sub Function EstAdresse(LaCellule) If Not Range(LaCellule) Is Nothing Then EstAdresse = True Else EstAdresse = False End If End Function Je sélectionne une cellule est lance la sub. Si la cellule contient une adresse, ça me renvoie vrai, cool. Par contre j'ai une erreur si la cellule contient un nombre ou est vide. Comment gérer cette erreur ? Merci pour votre aide @+Laurent
MichD
La cellule qui sera envoyée en tant qu'argument contient soit rien, soit un nombre soit une adresse (par exemple P139).
Tu peux tester la fonction Í partir de la procédure "Test" en activant une des 3 possibilités suivantes: '__________________________________________ Sub Test() 'Le type de valeur que peut prendre cellule Cellule = "vvv" 'OU Cellule = "AAA" Adresse de cellule 'Cellule = "" 'Vide 'Cellule = 25 'Valeur numérique MsgBox Contenu(Cellule) End Sub '__________________________________________ '__________________________________________ Function Contenu(Cellule As Variant) As Boolean Dim GestionErreur As String On Error GoTo GestionErreur If Cellule = "" Then Contenu = True Exit Function End If If IsNumeric(Cellule) Then Contenu = True Exit Function End If Set Rg = Range(Cellule) Contenu = True Exit Function GestionErreur: If Err.Number <> 0 Then Contenu = False Err = 0 End If Exit Function End Function '__________________________________________ MichD
La cellule qui sera envoyée en tant qu'argument contient soit rien, soit
un nombre soit une adresse (par exemple P139).
Tu peux tester la fonction Í partir de la procédure "Test" en activant
une des 3 possibilités suivantes:
'__________________________________________
Sub Test()
'Le type de valeur que peut prendre cellule
Cellule = "vvv" 'OU Cellule = "AAA" Adresse de cellule
'Cellule = "" 'Vide
'Cellule = 25 'Valeur numérique
MsgBox Contenu(Cellule)
End Sub
'__________________________________________
'__________________________________________
Function Contenu(Cellule As Variant) As Boolean
Dim GestionErreur As String
On Error GoTo GestionErreur
If Cellule = "" Then
Contenu = True
Exit Function
End If
If IsNumeric(Cellule) Then
Contenu = True
Exit Function
End If
Set Rg = Range(Cellule)
Contenu = True
Exit Function
GestionErreur:
If Err.Number <> 0 Then
Contenu = False
Err = 0
End If
Exit Function
La cellule qui sera envoyée en tant qu'argument contient soit rien, soit un nombre soit une adresse (par exemple P139).
Tu peux tester la fonction Í partir de la procédure "Test" en activant une des 3 possibilités suivantes: '__________________________________________ Sub Test() 'Le type de valeur que peut prendre cellule Cellule = "vvv" 'OU Cellule = "AAA" Adresse de cellule 'Cellule = "" 'Vide 'Cellule = 25 'Valeur numérique MsgBox Contenu(Cellule) End Sub '__________________________________________ '__________________________________________ Function Contenu(Cellule As Variant) As Boolean Dim GestionErreur As String On Error GoTo GestionErreur If Cellule = "" Then Contenu = True Exit Function End If If IsNumeric(Cellule) Then Contenu = True Exit Function End If Set Rg = Range(Cellule) Contenu = True Exit Function GestionErreur: If Err.Number <> 0 Then Contenu = False Err = 0 End If Exit Function End Function '__________________________________________ MichD
MichD
Le 19/05/22 Í 06:47, MichD a écrit :
La cellule qui sera envoyée en tant qu'argument contient soit rien, soit un nombre soit une adresse (par exemple P139).
Tu peux tester la fonction Í partir de la procédure "Test" en activant une des 3 possibilités suivantes: '__________________________________________ Sub Test() 'Le type de valeur que peut prendre cellule Cellule = "vvv" 'OU Cellule = "AAA" Adresse de cellule 'Cellule = ""  'Vide 'Cellule = 25  'Valeur numérique MsgBox Contenu(Cellule) End Sub '__________________________________________ '__________________________________________ Function Contenu(Cellule As Variant) As Boolean Dim GestionErreur As String On Error GoTo GestionErreur If Cellule = "" Then    Contenu = True    Exit Function End If If IsNumeric(Cellule) Then    Contenu = True    Exit Function End If Set Rg = Range(Cellule) Contenu = True Exit Function GestionErreur: If Err.Number <> 0 Then    Contenu = False    Err = 0 End If Exit Function End Function '__________________________________________ MichD
J'aurais dÍ» écrire cette section de cette manière, nul besoin de tester une deuxième fois s'il y a une erreur... GestionErreur: Err = 0 Contenu = False Exit Function MichD
Le 19/05/22 Í 06:47, MichD a écrit :
La cellule qui sera envoyée en tant qu'argument contient soit rien,
soit un nombre soit une adresse (par exemple P139).
Tu peux tester la fonction Í partir de la procédure "Test" en activant
une des 3 possibilités suivantes:
'__________________________________________
Sub Test()
'Le type de valeur que peut prendre cellule
Cellule = "vvv"Â 'OU Cellule = "AAA" Adresse de cellule
'Cellule = ""Â Â 'Vide
'Cellule = 25Â Â 'Valeur numérique
MsgBox Contenu(Cellule)
End Sub
'__________________________________________
'__________________________________________
Function Contenu(Cellule As Variant) As Boolean
Dim GestionErreur As String
On Error GoTo GestionErreur
If Cellule = "" Then
   Contenu = True
   Exit Function
End If
If IsNumeric(Cellule) Then
   Contenu = True
   Exit Function
End If
Set Rg = Range(Cellule)
Contenu = True
Exit Function
GestionErreur:
If Err.Number <> 0 Then
   Contenu = False
   Err = 0
End If
Exit Function
End Function
'__________________________________________
MichD
J'aurais dÍ» écrire cette section de cette manière, nul besoin de tester
une deuxième fois s'il y a une erreur...
GestionErreur:
Err = 0
Contenu = False
Exit Function
La cellule qui sera envoyée en tant qu'argument contient soit rien, soit un nombre soit une adresse (par exemple P139).
Tu peux tester la fonction Í partir de la procédure "Test" en activant une des 3 possibilités suivantes: '__________________________________________ Sub Test() 'Le type de valeur que peut prendre cellule Cellule = "vvv" 'OU Cellule = "AAA" Adresse de cellule 'Cellule = ""  'Vide 'Cellule = 25  'Valeur numérique MsgBox Contenu(Cellule) End Sub '__________________________________________ '__________________________________________ Function Contenu(Cellule As Variant) As Boolean Dim GestionErreur As String On Error GoTo GestionErreur If Cellule = "" Then    Contenu = True    Exit Function End If If IsNumeric(Cellule) Then    Contenu = True    Exit Function End If Set Rg = Range(Cellule) Contenu = True Exit Function GestionErreur: If Err.Number <> 0 Then    Contenu = False    Err = 0 End If Exit Function End Function '__________________________________________ MichD
J'aurais dÍ» écrire cette section de cette manière, nul besoin de tester une deuxième fois s'il y a une erreur... GestionErreur: Err = 0 Contenu = False Exit Function MichD
LaurentC
MichD a exposé le 19/05/2022 :
Le 19/05/22 Í 06:47, MichD a écrit :
La cellule qui sera envoyée en tant qu'argument contient soit rien, soit un nombre soit une adresse (par exemple P139).
Tu peux tester la fonction Í partir de la procédure "Test" en activant une des 3 possibilités suivantes: '__________________________________________ Sub Test() 'Le type de valeur que peut prendre cellule Cellule = "vvv" 'OU Cellule = "AAA" Adresse de cellule 'Cellule = ""  'Vide 'Cellule = 25  'Valeur numérique MsgBox Contenu(Cellule) End Sub '__________________________________________ '__________________________________________ Function Contenu(Cellule As Variant) As Boolean Dim GestionErreur As String On Error GoTo GestionErreur If Cellule = "" Then    Contenu = True    Exit Function End If If IsNumeric(Cellule) Then    Contenu = True    Exit Function End If Set Rg = Range(Cellule) Contenu = True Exit Function GestionErreur: If Err.Number <> 0 Then    Contenu = False    Err = 0 End If Exit Function End Function '__________________________________________ MichD
J'aurais dÍ» écrire cette section de cette manière, nul besoin de tester une deuxième fois s'il y a une erreur... GestionErreur: Err = 0 Contenu = False Exit Function MichD
Excellent, gros merci Í toi :-) @+Laurent
MichD a exposé le 19/05/2022 :
Le 19/05/22 Í 06:47, MichD a écrit :
La cellule qui sera envoyée en tant qu'argument contient soit rien, soit
un nombre soit une adresse (par exemple P139).
Tu peux tester la fonction Í partir de la procédure "Test" en activant une
des 3 possibilités suivantes:
'__________________________________________
Sub Test()
'Le type de valeur que peut prendre cellule
Cellule = "vvv"Â 'OU Cellule = "AAA" Adresse de cellule
'Cellule = ""Â Â 'Vide
'Cellule = 25Â Â 'Valeur numérique
MsgBox Contenu(Cellule)
End Sub
'__________________________________________
'__________________________________________
Function Contenu(Cellule As Variant) As Boolean
Dim GestionErreur As String
On Error GoTo GestionErreur
If Cellule = "" Then
   Contenu = True
   Exit Function
End If
If IsNumeric(Cellule) Then
   Contenu = True
   Exit Function
End If
Set Rg = Range(Cellule)
Contenu = True
Exit Function
GestionErreur:
If Err.Number <> 0 Then
   Contenu = False
   Err = 0
End If
Exit Function
End Function
'__________________________________________
MichD
J'aurais dÍ» écrire cette section de cette manière, nul besoin de tester une
deuxième fois s'il y a une erreur...
GestionErreur:
Err = 0
Contenu = False
Exit Function
La cellule qui sera envoyée en tant qu'argument contient soit rien, soit un nombre soit une adresse (par exemple P139).
Tu peux tester la fonction Í partir de la procédure "Test" en activant une des 3 possibilités suivantes: '__________________________________________ Sub Test() 'Le type de valeur que peut prendre cellule Cellule = "vvv" 'OU Cellule = "AAA" Adresse de cellule 'Cellule = ""  'Vide 'Cellule = 25  'Valeur numérique MsgBox Contenu(Cellule) End Sub '__________________________________________ '__________________________________________ Function Contenu(Cellule As Variant) As Boolean Dim GestionErreur As String On Error GoTo GestionErreur If Cellule = "" Then    Contenu = True    Exit Function End If If IsNumeric(Cellule) Then    Contenu = True    Exit Function End If Set Rg = Range(Cellule) Contenu = True Exit Function GestionErreur: If Err.Number <> 0 Then    Contenu = False    Err = 0 End If Exit Function End Function '__________________________________________ MichD
J'aurais dÍ» écrire cette section de cette manière, nul besoin de tester une deuxième fois s'il y a une erreur... GestionErreur: Err = 0 Contenu = False Exit Function MichD