OVH Cloud OVH Cloud

Somme chiffres dans trois cel

16 réponses
Avatar
Jacquouille
Bonjour
Le problème (numérologie):

Dans 3 cel, la date de naissance (A1=jour;B1=mois et C1=année).

J'aimerais faire la somme de tous les chiffres compris dans ces 3 cel.
Sur le net, j'ai trouvé ceci, qui me fait la somme d'une cel:
'=SOMME(1*STXT(A1;LIGNE(INDIRECT("1:"&ENT(LOG(A1))+1));1))

J'ai résolu le prob en additionnant 3 fois cette formule.
Mais, le résultat me donne un nombre à deux chiffres... et je dois
recommencer;
Existe-t-il une formule qui "bouclerait" aussi ce résultat?

Merci et bonne journée.

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com

6 réponses

1 2
Avatar
isabelle
désolé je m'étais emmêlé,

pour le jour, mois et année entrée dans 3 cellules:

Function numerologie(plg As Range) As Integer
Dim x As Integer, n As Integer, i As Integer, y As Integer
For Each c In plg
For i = 1 To Len(c)
x = x + Mid(c, i, 1) * 1
Next
Next
deb:
If Len("" & x) >= 2 Then
For y = 1 To Len(x)
n = n + Mid(x, y, 1) * 1
Next
Else
numerologie = x
Exit Function
End If
If Len("" & n) >= 2 Then x = n: n = 0: GoTo deb
numerologie = n
End Function

pour une vrai date entrée dans une cellule:

Function numerologie_date(cellule As Range) As Integer
Dim x As Integer, n As Integer, i As Integer, y As Integer, d As String
d = Format(cellule, "ddmmyyyy")
For i = 1 To Len(d)
x = x + Mid(d, i, 1) * 1
Next
deb:
If Len("" & x) >= 2 Then
For y = 1 To Len(x)
n = n + Mid(x, y, 1) * 1
Next
Else
numerologie_date = x
Exit Function
End If
If Len("" & n) >= 2 Then x = n: n = 0: GoTo deb
numerologie_date = n
End Function

isabelle
Avatar
isabelle
désolé je m'étais emmêlé,

pour le jour, mois et année entrée dans 3 cellules:

Function numerologie(plg As Range) As Integer
Dim x As Integer, n As Integer, i As Integer, y As Integer
For Each c In plg
For i = 1 To Len(c)
x = x + Mid(c, i, 1) * 1
Next
Next
deb:
If Len("" & x) >= 2 Then
For y = 1 To Len(x)
n = n + Mid(x, y, 1) * 1
Next
Else
numerologie = x
Exit Function
End If
If Len("" & n) >= 2 Then x = n: n = 0: GoTo deb
numerologie = n
End Function

pour une vrai date entrée dans une cellule:

Function numerologie_date(cellule As Range) As Integer
Dim x As Integer, n As Integer, i As Integer, y As Integer, d As String
d = Format(cellule, "ddmmyyyy")
For i = 1 To Len(d)
x = x + Mid(d, i, 1) * 1
Next
deb:
If Len("" & x) >= 2 Then
For y = 1 To Len(x)
n = n + Mid(x, y, 1) * 1
Next
Else
numerologie_date = x
Exit Function
End If
If Len("" & n) >= 2 Then x = n: n = 0: GoTo deb
numerologie_date = n
End Function

isabelle
Avatar
Jacquouille
Hello belle Isa belle

Ta 3° fonction semble me causer problème.
Serait-ce abuser de te demander de me traduire cela en macro, svp?
Et, tant que tu seras au clavier, fais-le aussi pour la date en 3 cel, svp.
mais, c'est moins grâve car jacky m'a donné une belle formule avec MOD;
déjà merci
jac



Jacques

" Le vin est au repas ce que le parfum est à la femme."
"isabelle" a écrit dans le message de groupe de discussion :
n21e59$anl$

désolé je m'étais emmêlé,

pour le jour, mois et année entrée dans 3 cellules:

Function numerologie(plg As Range) As Integer
Dim x As Integer, n As Integer, i As Integer, y As Integer
For Each c In plg
For i = 1 To Len(c)
x = x + Mid(c, i, 1) * 1
Next
Next
deb:
If Len("" & x) >= 2 Then
For y = 1 To Len(x)
n = n + Mid(x, y, 1) * 1
Next
Else
numerologie = x
Exit Function
End If
If Len("" & n) >= 2 Then x = n: n = 0: GoTo deb
numerologie = n
End Function

pour une vrai date entrée dans une cellule:

Function numerologie_date(cellule As Range) As Integer
Dim x As Integer, n As Integer, i As Integer, y As Integer, d As String
d = Format(cellule, "ddmmyyyy")
For i = 1 To Len(d)
x = x + Mid(d, i, 1) * 1
Next
deb:
If Len("" & x) >= 2 Then
For y = 1 To Len(x)
n = n + Mid(x, y, 1) * 1
Next
Else
numerologie_date = x
Exit Function
End If
If Len("" & n) >= 2 Then x = n: n = 0: GoTo deb
numerologie_date = n
End Function

isabelle


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Avatar
isabelle
Le 2015-11-12 07:49, Jacquouille a écrit :
Serait-ce abuser de te demander de me traduire cela en macro, svp?



QUOI!!! tu veut m'abuser...
mais non... ;-)

Sub numerologie_macro()
Dim x As Integer, n As Integer, i As Integer, y As Integer
lgn = 4 '<-----------------------------choix de la ligne
Set plg = Range(Cells(lgn, 1), Cells(lgn, 3)) '<-pour le cellules des colonnes
A,B et C
For Each c In plg
For i = 1 To Len(c)
x = x + Mid(c, i, 1) * 1
Next
Next

deb:
If Len("" & x) >= 2 Then
For y = 1 To Len(x)
n = n + Mid(x, y, 1) * 1
Next
Else
Debug.Print x
Exit Sub
End If
If Len("" & n) >= 2 Then x = n: n = 0: GoTo deb

Debug.Print n
End Sub

Sub numerologie_date_macro()
Dim x As Integer, n As Integer, i As Integer, y As Integer, d As String
cellule = Cells(4, 4) '<-cellules contenant la date
Dim x As Integer, n As Integer, i As Integer
d = Format(cellule, "ddmmyyyy")
For i = 1 To Len(d)
x = x + Mid(d, i, 1) * 1
Next

deb:
If Len("" & x) >= 2 Then
For y = 1 To Len(x)
n = n + Mid(x, y, 1) * 1
Next
Else
Debug.Print x
Exit Sub
End If
If Len("" & n) >= 2 Then x = n: n = 0: GoTo deb
Debug.Print n
End Sub

isabelle
Avatar
Jacquouille
Bonjour Isabelle

Je me demande si le verbe "abuser" n'a pas eu quelques conséquences qui
auraient amené tes pensées en delà des feuilles Excel.
Pourquoi Dim(x et autres à deux reprises? l'amour en tête?
Ensuite, je lis que tu poses d comme format de la cellule contenant la date.
A la ligne suivante, tu poses Len(d)....... Ce ne serait pas Len(cellule)?

A te lire
Déjà merci

Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"isabelle" a écrit dans le message de groupe de discussion :
n227o3$4j9$

Le 2015-11-12 07:49, Jacquouille a écrit :
Serait-ce abuser de te demander de me traduire cela en macro, svp?



QUOI!!! tu veut m'abuser...
mais non... ;-)


Sub numerologie_date_macro()
Dim x As Integer, n As Integer, i As Integer, y As Integer, d As String
cellule = Cells(4, 4) '<-cellules contenant la date
Dim x As Integer, n As Integer, i As Integer
d = Format(cellule, "ddmmyyyy")
For i = 1 To Len(d)
x = x + Mid(d, i, 1) * 1
Next

deb:
If Len("" & x) >= 2 Then
For y = 1 To Len(x)
n = n + Mid(x, y, 1) * 1
Next
Else
Debug.Print x
Exit Sub
End If
If Len("" & n) >= 2 Then x = n: n = 0: GoTo deb
Debug.Print n
End Sub

isabelle


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Avatar
isabelle
Le 2015-11-13 05:37, Jacquouille a écrit :
Bonjour Isabelle

Pourquoi Dim(x et autres à deux reprises? l'amour en tête?



oups, j'ai mal passé la serpillère

Ensuite, je lis que tu poses d comme format de la cellule contenant la date.



ce n'est pas un format de cellule, c'est la transformation de la variable d (string)

A la ligne suivante, tu poses Len(d)....... Ce ne serait pas Len(cellule)?



tu l'aura sans doute compris, il ne faut pas utiliser la vrai date, mais plutôt
la chaine (d)

isabelle
1 2