Bonjour à tous
Peut on dans la ligne A trouver le chiffre Maxi (Par Formule) parmis des cellules comportant des Dates et des chiffres.
Merci de votre aide
Function MaSomme(zone As Range) As Integer
For Each curCell In zone.Cells
If IsNumeric(curCell.Value) And curCell.Value <> vbNullString Then
MaSomme = MaSomme + [B][COLOR=Red]curCell.Value[/COLOR][/B]
End If
Next curCell
End Function
Bonjour,
j'ai un peu le meme genre de probleme. Je voudrai que la valeur d'une cellule memorise le MAX de cette meme cellule dont la donnée provient d'une requete WEB. cette donnée est numerique.
quel est le séparateur décimal de tes "valeurs numériques" ?
si c'est un point (.), c'est normal que ça ne marche pas.
si c'est bien les cas, cette macro devrai te satisfaire :
Code:
Function MonMax(zone As Range) As Double
For Each curCell In zone.Cells
If IsNumeric(Replace(curCell.Value, ".", ",")) Then
If MonMax < Replace(curCell.Value, ".", ",") Then MonMax = Replace(curCell.Value, ".", ",")
End If
Next curCell
End Function
elle vérifie les nombres, que le séparateur soit un point ou une virgule.
Bonjour mromain et le forum
Merci pour la fonction çà fonctionne correctement.
J'abuse peut etre mais la fonction compte peut on lui mettre des conditionset comment : Exemple:
-Compter uniquement les dates
-Les cellules ayant la lettre E par exemple
-Les cellules ayant que du texte .
Merci pout toute votre aide
If IsNumeric(curCell.Value) And curCell.Value <> vbNullString Then
par
Code:
If IsDate(curCell.Value) Then
et pour tester la présence d'un "E"
Code:
If InStr(curCell.Value, "E") > 0 Then
pour vérifier que la cellule ne contient que du texte (donc pas de chiffre), c'est un peu plus compliquer, il n'y a pas de fonction toute faites pour ce test.
pour compter les cellules qui ne contiennent uniquement du texte, ajouter cette fonction :
Code:
Public Function ContientQueDuTexte(texteAnalyse As Variant) As Boolean
ContientQueDuTexte = True
texteAnalyse = Trim(CStr(texteAnalyse))
For i = 1 To Len(CStr(texteAnalyse))
If IsNumeric(Mid(CStr(texteAnalyse), i, 1)) Then ContientQueDuTexte = False: Exit Function
Next i
End Function
et remplacer la ligne de condition par
Code:
If ContientQueDuTexte(curCell.Value) And curCell.Value <> vbNullString Then
mromain:
Pourquoi ne pas utiliser la fonction native d'Excel ? (IsText)
Code:
Sub test()
Dim s$, n&, m$: s = "texte": n = 123
m = s & ": " & Application.WorksheetFunction.IsText(s) & Chr(13)
m = m & n & ": " & Application.WorksheetFunction.IsText(n)
MsgBox m
End Sub
Bonjour Bruce68, Raja, mromain, vbacrumble, excellentt et JHA, bonjour à toutes et à tous
Bruce68 à dit:
Merci pour la fonction çà fonctionne correctement.
J'abuse peut etre mais la fonction compte peut on lui mettre des conditions et comment : Exemple:
-Compter uniquement les dates
-Les cellules ayant la lettre E par exemple
-Les cellules ayant que du texte .
Pas mieux que tout le monde, mais simplement pour mettre mon grain de sel
Je suis parti du postulat que ton fichier représente des comptes et qu'aucun montant n'est supérieur à 39448. Pourquoi ce chiffre ? Parce qu'il correspond à la date du 1er janvier 2008
en fait (j'avais sûrement mal compris la demande de Bruce68) je vérifie, avec ma fonction, qu'il n'y a aucun chiffre dans la chaine de caractère ("que du texte").
du coup,
Application.WorksheetFunction.IsText("toto123") renvoie true
alors que
ContientQueDuTexte("toto123") renvoie false
Bonsoir à tous
Merci mromain, nolich, vbacrumble pour toutes vos réponses là j'ai un choix exellent j'espere qu'il servira à d'autres en tout cas merci beaucoup.
Bonnee soirée à tous.
J'ai encore un probleme je pense que cela vient du format de MaSomme
Je rentre dans ma ligne des chiffres à l'aide d'un TextBox Sans format spécial.
Quand je met le chiffre dans la cellule (format personnalisé: "0.00 Kl €")
EX: TextBox = 540.25 cellule = 540.25 Kl €.
dans MaSomme = 540.00 Kl € cellule au format personnalisé:"0.00 Kl €"
Par contre avec MonMax aucun Probleme le chiffre est correct et fait de la meme façon que MaSomme.
Bonjour à tous
Personne pour me dire comment il faut faire pour mettre le chiffre de la somme avec 2 chiffres derriere la virgule dans cette fonction avec la fonction monMax aucun probleme.
Function MaSomme(zone As Range) As Integer
For Each curCell In zone.Cells
If IsNumeric(curCell.Value) And curCell.Value <> vbNullString Then
MaSomme = MaSomme + curCell.Value
End If
Next curCell
End Function
Merci pour l'aide
Bonjour à tous
Personne pour me dire comment il faut faire pour mettre le chiffre de la somme avec 2 chiffres derriere la virgule dans cette fonction avec la fonction monMax aucun probleme.
Function MaSomme(zone As Range) As Integer
For Each curCell In zone.Cells
If IsNumeric(curCell.Value) And curCell.Value <> vbNullString Then
MaSomme = MaSomme + curCell.Value
End If
Next curCell
End Function
Merci pour l'aide
Je dois être bête mais je ne comprends pas ta première remarque. En effet, mromain t'a envoyé ceci :
mromain à dit:
Code:
Function MonMax(zone As Range) As Double
For Each curCell In zone.Cells
If IsNumeric(Replace(curCell.Value, ".", ",")) Then
If MonMax < Replace(curCell.Value, ".", ",") Then MonMax = Replace(curCell.Value, ".", ",")
End If
Next curCell
End Function
A priori, tu dis que cela te donne le bon résultat. Si tu veux remercier mromain pour sa fonction, il te suffit de l'écrire. Dans ton post, il semble qu'il te manque quelquechose, est-ce le cas ?
La fonction MaSomme donne bien le bon résultat mais sans aucun chiffre derriere la virgule ou le point suivant la config. (Le Chiffre est Arrondi)
Pour la meme ligne avec la fonction MonMax j'ai le chiffre avec tous les chiffres derriere la virgule ou le point.
Ex Cellule A8 =742.45
MaSomme = 742
MonMax= 742.45
Ce que je voudrais : que faut il modifier dans fonction MaSomme Pour avoir 2 nchiffres derrier la virgule ou le point en sachant que j'aimerais mettre le format 0.00 Kl €
Merci pour l'aide.
Bonsoir vbacrumble
Merci pour la réponse cela fait la somme de n'importe quel Chiffre meme les dates et moi je ne veux que les chiffres sans les dates mais avec 2 chiffres derriere la virgule ou le point suivant la config.
merci pour toute votre aide