OVH Cloud OVH Cloud

Nombre de + dans une plage de cellules

8 réponses
Avatar
Major TOM
Bonjour,

Je cherche une formule me permettant de calculer le nombre de "+" contenu dans
une plage de cellule.


--

Par avance, merci de votre aide.

Thierry

8 réponses

Avatar
Daniel
Bonjour.
Essaie (la macro ne compte pas les "+" inclus dans les formules) :

Sub test1()
Dim c As Range, Ctr As Long
For Each c In Selection
For i = 1 To Len(c.Value)
If Mid(c.Value, i, 1) = "+" Then Ctr = Ctr + 1
Next i
Next c
MsgBox Ctr
End Sub

Cordialement.
Daniel
"Major TOM" a écrit dans le message de news:
eabeAP%23%
Bonjour,

Je cherche une formule me permettant de calculer le nombre de "+" contenu
dans une plage de cellule.


--

Par avance, merci de votre aide.

Thierry



Avatar
Major TOM
Merci, mais dommage, car c'est ce que je veux faire. Compter les plus d'une
formule.

Mon besoin est de déterminer le nombre de reçus pour des notes de frais.
Le frais sont comptés par jour et par famille et par exemple pour le péage, il
est possible d'avoir plusieurs reçus pour une case à remplir.
Donc la formule est de type +6+3 ... ce qui fait 2("+") + 1 = 3 tickets


Thierry


"Daniel" a écrit dans le message de news:
%23t%23iZY%23%
Bonjour.
Essaie (la macro ne compte pas les "+" inclus dans les formules) :

Sub test1()
Dim c As Range, Ctr As Long
For Each c In Selection
For i = 1 To Len(c.Value)
If Mid(c.Value, i, 1) = "+" Then Ctr = Ctr + 1
Next i
Next c
MsgBox Ctr
End Sub

Cordialement.
Daniel
"Major TOM" a écrit dans le message de news:
eabeAP%23%
Bonjour,

Je cherche une formule me permettant de calculer le nombre de "+" contenu
dans une plage de cellule.


--

Par avance, merci de votre aide.

Thierry







Avatar
Daniel
Alors :

Sub test1()
Dim c As Range, Ctr As Long
For Each c In Selection
For i = 1 To Len(c.Formula)
Var = Mid(c.Formula, i, 1)
If Mid(c.Formula, i, 1) = "+" Then Ctr = Ctr + 1
Next i
Next c
MsgBox Ctr
End Sub

Daniel
"Major TOM" a écrit dans le message de news:
upoHIe%23%
Merci, mais dommage, car c'est ce que je veux faire. Compter les plus
d'une formule.

Mon besoin est de déterminer le nombre de reçus pour des notes de frais.
Le frais sont comptés par jour et par famille et par exemple pour le
péage, il est possible d'avoir plusieurs reçus pour une case à remplir.
Donc la formule est de type +6+3 ... ce qui fait 2("+") + 1 = 3
tickets


Thierry


"Daniel" a écrit dans le message de news:
%23t%23iZY%23%
Bonjour.
Essaie (la macro ne compte pas les "+" inclus dans les formules) :

Sub test1()
Dim c As Range, Ctr As Long
For Each c In Selection
For i = 1 To Len(c.Value)
If Mid(c.Value, i, 1) = "+" Then Ctr = Ctr + 1
Next i
Next c
MsgBox Ctr
End Sub

Cordialement.
Daniel
"Major TOM" a écrit dans le message de
news: eabeAP%23%
Bonjour,

Je cherche une formule me permettant de calculer le nombre de "+"
contenu dans une plage de cellule.


--

Par avance, merci de votre aide.

Thierry











Avatar
Batchiboy
Merci, je m'y penche sans tomber

"Daniel" a écrit dans le message de news:
%235EIfz%23%
Alors :

Sub test1()
Dim c As Range, Ctr As Long
For Each c In Selection
For i = 1 To Len(c.Formula)
Var = Mid(c.Formula, i, 1)
If Mid(c.Formula, i, 1) = "+" Then Ctr = Ctr + 1
Next i
Next c
MsgBox Ctr
End Sub

Daniel
"Major TOM" a écrit dans le message de
news: upoHIe%23%
Merci, mais dommage, car c'est ce que je veux faire. Compter les plus
d'une formule.

Mon besoin est de déterminer le nombre de reçus pour des notes de frais.
Le frais sont comptés par jour et par famille et par exemple pour le
péage, il est possible d'avoir plusieurs reçus pour une case à remplir.
Donc la formule est de type +6+3 ... ce qui fait 2("+") + 1 = 3
tickets


Thierry


"Daniel" a écrit dans le message de news:
%23t%23iZY%23%
Bonjour.
Essaie (la macro ne compte pas les "+" inclus dans les formules) :

Sub test1()
Dim c As Range, Ctr As Long
For Each c In Selection
For i = 1 To Len(c.Value)
If Mid(c.Value, i, 1) = "+" Then Ctr = Ctr + 1
Next i
Next c
MsgBox Ctr
End Sub

Cordialement.
Daniel
"Major TOM" a écrit dans le message de
news: eabeAP%23%
Bonjour,

Je cherche une formule me permettant de calculer le nombre de "+"
contenu dans une plage de cellule.


--

Par avance, merci de votre aide.

Thierry















Avatar
Major TOM
Merci Daniel.

Pour obtenir ça :
Dans A1 : nbPlus(A2)
Dans A2 : +5+8+3

J'ai fait ça :
Function NbPlus(c As Range)
'Renvoie le nombre de plus contenu dans une formule
Dim Ctr As Long
For Each c In Selection
For i = 1 To Len(c.Formula)
Var = Mid(c.Formula, i, 1)
If Mid(c.Formula, i, 1) = "+" Then
Ctr = Ctr + 1
End If
Next i
Next c
NbPlus = Ctr
End Function

Théoriquement je devrai obtenir comme résultat : 3
Malheureusement, j'obtient : 0

Où est-ce que cela pêche ?


Par avance, merci de votre aide.

Thierry
"Daniel" a écrit dans le message de news:
%235EIfz%23%
Alors :

Sub test1()
Dim c As Range, Ctr As Long
For Each c In Selection
For i = 1 To Len(c.Formula)
Var = Mid(c.Formula, i, 1)
If Mid(c.Formula, i, 1) = "+" Then Ctr = Ctr + 1
Next i
Next c
MsgBox Ctr
End Sub

Daniel
"Major TOM" a écrit dans le message de news:
upoHIe%23%
Merci, mais dommage, car c'est ce que je veux faire. Compter les plus d'une
formule.

Mon besoin est de déterminer le nombre de reçus pour des notes de frais.
Le frais sont comptés par jour et par famille et par exemple pour le péage,
il est possible d'avoir plusieurs reçus pour une case à remplir.
Donc la formule est de type +6+3 ... ce qui fait 2("+") + 1 = 3 tickets


Thierry


"Daniel" a écrit dans le message de news:
%23t%23iZY%23%
Bonjour.
Essaie (la macro ne compte pas les "+" inclus dans les formules) :

Sub test1()
Dim c As Range, Ctr As Long
For Each c In Selection
For i = 1 To Len(c.Value)
If Mid(c.Value, i, 1) = "+" Then Ctr = Ctr + 1
Next i
Next c
MsgBox Ctr
End Sub

Cordialement.
Daniel
"Major TOM" a écrit dans le message de news:
eabeAP%23%
Bonjour,

Je cherche une formule me permettant de calculer le nombre de "+" contenu
dans une plage de cellule.


--

Par avance, merci de votre aide.

Thierry















Avatar
JB
Bonjour,

Function NbPlus(champ As Range)
n = 0
For Each c In champ
temp = c.Formula
For i = 1 To Len(temp)
If Mid(temp, i, 1) = "+" Then
n = n + 1
End If
Next i
Next c
NbPlus = n
End Function

Cordiaement JB
Avatar
Major TOM
Merci JB et Daniel

C'est OK

--

Par avance, merci de votre aide.

Thierry
"JB" a écrit dans le message de news:

Bonjour,

Function NbPlus(champ As Range)
n = 0
For Each c In champ
temp = c.Formula
For i = 1 To Len(temp)
If Mid(temp, i, 1) = "+" Then
n = n + 1
End If
Next i
Next c
NbPlus = n
End Function

Cordiaement JB



Avatar
Michel Gaboly
Bonjour,

On peut simplifier en éliminant la seconde boucle :

au lieu de tester chaque caractère, il suffit de calculer la différence
en nombre de caractères entre la formule, et la chaîne de caractères
obtenue en éliminant les "+" de la formule.

Function NbPlus(Plg As Range)
Dim c As Range
For Each c In Plg
NbPlus = NbPlus + Len(c.Formula) - Len(Replace(c.Formula, "+", ""))
Next
End Function

NB - La fonction Replace utilisée ci-dessus est liée à VB6. Elle n'est
donc disponible ni dans Excel 97, ni dans les versions Mac.

Pour ces verions, il faut utiliser la fonction de feuille de calcul
SUBSTITUE() à la place de Replace, ou écrire une fonction Replace
faisant appel à cette fonction :

Function Replace(Txt As String, A$, N$)
Replace = Application.WorksheetFunction.Substitute(Txt, A, N)
End Function


Bonjour,

Function NbPlus(champ As Range)
n = 0
For Each c In champ
temp = c.Formula
For i = 1 To Len(temp)
If Mid(temp, i, 1) = "+" Then
n = n + 1
End If
Next i
Next c
NbPlus = n
End Function

Cordiaement JB




--
Cordialement,

Michel Gaboly
www.gaboly.com