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

Combien y'a t'il de A de C de L de P de J etc. ....

10 réponses
Avatar
jean - rené grondin
Bonjour à tous et à toutes. J'ai une liste comprenant une centaines de noms
et de prénoms. Les noms sont dans une colonne ( par exemple de A1 à A 100 ),
les prénoms sont dans une deuxième colonne ( par exemple de B1 à B100 ). Ces
noms et prénoms correspondent à des élèves de CP, et je dois couper autant
de lettre qu'il y a par exemple de A de C de L de W de P de E etc. .....
Pour les prénoms, il y a bien sûr des prénoms composés, et certains d'entre
eux ont des tirets, d'autres pas. Existe t'il une solution.! Merçi d'y
répondre

10 réponses

Avatar
Pierre CFI [mvp]
bonjour
j'aime pas trop le travail au départ, donc je ne fais que le strict minimum, c'est à dire quand çà sert à quelque chose :o))
entre nous, quel est le but de la manoeuvre ?? à quoi çà va servir ?

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site perso
http://access.cfi.free.fr
"jean - rené grondin" a écrit dans le message de news:c8sei4$bms$
Bonjour à tous et à toutes. J'ai une liste comprenant une centaines de noms
et de prénoms. Les noms sont dans une colonne ( par exemple de A1 à A 100 ),
les prénoms sont dans une deuxième colonne ( par exemple de B1 à B100 ). Ces
noms et prénoms correspondent à des élèves de CP, et je dois couper autant
de lettre qu'il y a par exemple de A de C de L de W de P de E etc. .....
Pour les prénoms, il y a bien sûr des prénoms composés, et certains d'entre
eux ont des tirets, d'autres pas. Existe t'il une solution.! Merçi d'y
répondre




Avatar
Pierre Fauconnier
Bonjour

Une matricielle devrait faire l'affaire

=SOMME(NBCAR(A1:A10)-NBCAR(SUBSTITUE(MAJUSCULE(A1:A10);"E";"")))

à valider en matricielle ( CTRL+MAJ+ENTER ) ...

Cette fonction compte le nombre de e ou de E dans la plage A1:A10... A toi
d'adapter, par exemple en créant une liste de A à Z dans une plage, puis en
changeant le "E" par la référence de la lettre dans la plage...

Cela convient-il?


--
Pierre Fauconnier ()
Les sept laids tuent ( Lewis Carol )
Remplacez nospam.nospam par pfi.be pour répondre. Merci
"jean - rené grondin" a écrit dans le message
de news:c8sei4$bms$
Bonjour à tous et à toutes. J'ai une liste comprenant une centaines de
noms

et de prénoms. Les noms sont dans une colonne ( par exemple de A1 à A
100 ),

les prénoms sont dans une deuxième colonne ( par exemple de B1 à B100 ).
Ces

noms et prénoms correspondent à des élèves de CP, et je dois couper autant
de lettre qu'il y a par exemple de A de C de L de W de P de E etc. .....
Pour les prénoms, il y a bien sûr des prénoms composés, et certains
d'entre

eux ont des tirets, d'autres pas. Existe t'il une solution.! Merçi d'y
répondre




Avatar
Papy Bernard
Slt,
De "Pierre CFI [mvp]"
j'aime pas trop le travail au départ, donc je ne fais que le strict
minimum, c'est à dire quand çà sert à quelque chose :o))

entre nous, quel est le but de la manoeuvre ?? à quoi çà va servir ?


A rien, c'est pourquoi c'est indispensable.

--
A+
Papy Bernard (RTCien malgré lui)

Avatar
Pierre CFI [mvp]
:o)) RTCien aussi, et peut etre pour longtemp, enfin j'ai edf et téléphone

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site perso
http://access.cfi.free.fr
"Papy Bernard" a écrit dans le message de news:c8so3j$5nk$
Slt,
De "Pierre CFI [mvp]"
j'aime pas trop le travail au départ, donc je ne fais que le strict
minimum, c'est à dire quand çà sert à quelque chose :o))

entre nous, quel est le but de la manoeuvre ?? à quoi çà va servir ?


A rien, c'est pourquoi c'est indispensable.

--
A+
Papy Bernard (RTCien malgré lui)





Avatar
Pascal Engelmajer
Salut,
ça doit le faire
Option Explicit
Type pile 'pour QuickSort
mini As Integer
maxi As Integer
End Type
Dim t() As String
Sub compteLettre()
Dim memo As String
Dim i As Long, j As Long, k As Long, jj As Long
Dim pl As Range
Dim tref As Variant
Dim ref As String
Dim tbl As Variant
ref = " /-"
For i = 65 To 90
ref = ref & "/" & Chr(i)
Next i
tref = Split(ref, "/")
Set pl = [A1:B18] 'adresse de la plage
tbl = pl.Value
ReDim t(0)
For i = 1 To UBound(tbl, 1)
For j = 1 To UBound(tbl, 2)
For jj = 1 To Len(tbl(i, j))
t(k) = Mid(tbl(i, j), jj, 1)
k = k + 1
ReDim Preserve t(k)
Next jj
Next j
Next i
'trier
quickSort
'compter
For i = 0 To UBound(t)
memo = t(i)
j = 0
Do While t(i) = memo
j = j + 1
i = i + 1
Loop
Debug.Print "[" & UCase(memo) & "] =>" & j
Next i
End Sub
Sub quickSort()
Dim tMoyen As String
Dim iPile As Long
Dim mini As Long
Dim maxi As Long
Dim moyen As Long
Dim borne1 As Long
Dim borne2 As Long
Dim tt1 As String, tt2 As String
Dim i As Long
Dim pile(1 To 128) As pile
iPile = 1
pile(iPile).mini = 0 'Premier indice du tablaeu
pile(iPile).maxi = UBound(t) 'Dernier indice du tableau
iPile = iPile + 1 ' pour que iPile, à la première itération du do, soit
égal à 1

Do
'Debug.Print iPile & " ";
iPile = iPile - 1 'la pile diminue et le programme tri récursivement
les parties non triées
'Debug.Print iPile
mini = pile(iPile).mini ' au départ 1
maxi = pile(iPile).maxi ' au départ à la dimension du tableau
Do
borne1 = mini
borne2 = maxi
moyen = (mini + maxi) 2 'recuperer la valeur au milieu du
tableau
tMoyen = t(moyen)
Do
Do While t(borne1) < tMoyen 'recherche d 'un element plus
grand
borne1 = borne1 + 1
Loop

Do While t(borne2) > tMoyen 'recherche d 'un element plus
petit
borne2 = borne2 - 1
Loop
If borne1 <= borne2 Then
'si les deux pointeurs ne se rencontrent pas
'permutation des elements designés par les pointeurs
tt1 = t(borne1)
tt2 = t(borne1)
t(borne1) = t(borne2)
t(borne1) = t(borne2)
t(borne2) = tt1
t(borne2) = tt2
borne1 = borne1 + 1
borne2 = borne2 - 1
End If
Loop While borne1 <= borne2 'si les pointeurs se chevauchent,
'arrêt de la boucle

If borne2 - mini < maxi - borne1 Then
'stockage dans la pile de la partie de tableau non triée
If borne1 < maxi Then
pile(iPile).mini = borne1
pile(iPile).maxi = maxi
iPile = iPile + 1 'la pile augmente
End If
maxi = borne2
Else
If mini < borne2 Then
pile(iPile).mini = mini
pile(iPile).maxi = borne2
iPile = iPile + 1 'la pile augmente
End If
mini = borne1
End If
Loop While mini < maxi
Loop While iPile <> 1
End Sub

--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
http://www.ilyapa.net/baseExcel
"jean - rené grondin" a écrit dans le message
de news: c8sei4$bms$
Bonjour à tous et à toutes. J'ai une liste comprenant une centaines de
noms

et de prénoms. Les noms sont dans une colonne ( par exemple de A1 à A
100 ),

les prénoms sont dans une deuxième colonne ( par exemple de B1 à B100 ).
Ces

noms et prénoms correspondent à des élèves de CP, et je dois couper autant
de lettre qu'il y a par exemple de A de C de L de W de P de E etc. .....
Pour les prénoms, il y a bien sûr des prénoms composés, et certains
d'entre

eux ont des tirets, d'autres pas. Existe t'il une solution.! Merçi d'y
répondre




Avatar
jean - rené grondin
Salut Pierre Fauconnier. J'ai essayé ta solution, mais elle ne me donne que
le nombre de E. De plus, je ne comprend pas ce que tu veux dire, lorsque tu
dis qu'il faut créer une liste de A à Z dans une plage, puis en changeant le
"E" par la référence de la lettre dans la plage! Comme j'ai essayé de me
faire comprendre, j'ai une liste de noms et de prénoms de A1 à B100. Ce que
je souhaite, c'est qu'il y a un résultat qui me dit que de A1 à B100, j'ai
par exemple 32 C, 20 H, 12 W, 40 E, etc. ..... Lorsque j'aurai ce résultat,
je découperai avec des ciseaux 32 C, 20 H, 12 W, 40 E etc. .....



"Pierre Fauconnier" a écrit dans le
message news:
Bonjour

Une matricielle devrait faire l'affaire

=SOMME(NBCAR(A1:A10)-NBCAR(SUBSTITUE(MAJUSCULE(A1:A10);"E";"")))

à valider en matricielle ( CTRL+MAJ+ENTER ) ...

Cette fonction compte le nombre de e ou de E dans la plage A1:A10... A toi
d'adapter, par exemple en créant une liste de A à Z dans une plage, puis
en

changeant le "E" par la référence de la lettre dans la plage...

Cela convient-il?


--
Pierre Fauconnier ()
Les sept laids tuent ( Lewis Carol )
Remplacez nospam.nospam par pfi.be pour répondre. Merci
"jean - rené grondin" a écrit dans le
message

de news:c8sei4$bms$
Bonjour à tous et à toutes. J'ai une liste comprenant une centaines de
noms

et de prénoms. Les noms sont dans une colonne ( par exemple de A1 à A
100 ),

les prénoms sont dans une deuxième colonne ( par exemple de B1 à B100 ).
Ces

noms et prénoms correspondent à des élèves de CP, et je dois couper
autant


de lettre qu'il y a par exemple de A de C de L de W de P de E etc. .....
Pour les prénoms, il y a bien sûr des prénoms composés, et certains
d'entre

eux ont des tirets, d'autres pas. Existe t'il une solution.! Merçi d'y
répondre








Avatar
AV
Tes noms en A1:A100 - Tes prénoms en B1:B100 (à adapter)
Tu listes les lettres majuscules de l'alphabet de C1 à C26 (A,B,C......Z)
En D1 tu mets la formule suivante :
=SOMMEPROD(NBCAR($A$1:$A$100&$B$1:$B$100)-NBCAR(SUBSTITUE(MAJUSCULE($A$1:$A$100&
$B$1:$B$100);C1;"")))
Et tu recopies --> C26

AV
Avatar
Pierre Fauconnier
Bonjour

Je vois que AV m'a précédé dans mon complément d'informations, et en
utilisant sommeprod en lieu et place d'une matricielle...

Pierre Fauconnier

"jean - rené grondin" a écrit dans le message
de news:c8stk8$gj9$
Salut Pierre Fauconnier. J'ai essayé ta solution, mais elle ne me donne
que

le nombre de E. De plus, je ne comprend pas ce que tu veux dire, lorsque
tu

dis qu'il faut créer une liste de A à Z dans une plage, puis en changeant
le

"E" par la référence de la lettre dans la plage! Comme j'ai essayé de me
faire comprendre, j'ai une liste de noms et de prénoms de A1 à B100. Ce
que

je souhaite, c'est qu'il y a un résultat qui me dit que de A1 à B100, j'ai
par exemple 32 C, 20 H, 12 W, 40 E, etc. ..... Lorsque j'aurai ce
résultat,

je découperai avec des ciseaux 32 C, 20 H, 12 W, 40 E etc. .....



"Pierre Fauconnier" a écrit dans le
message news:
Bonjour

Une matricielle devrait faire l'affaire

=SOMME(NBCAR(A1:A10)-NBCAR(SUBSTITUE(MAJUSCULE(A1:A10);"E";"")))

à valider en matricielle ( CTRL+MAJ+ENTER ) ...

Cette fonction compte le nombre de e ou de E dans la plage A1:A10... A
toi


d'adapter, par exemple en créant une liste de A à Z dans une plage, puis
en

changeant le "E" par la référence de la lettre dans la plage...

Cela convient-il?


--
Pierre Fauconnier ()
Les sept laids tuent ( Lewis Carol )
Remplacez nospam.nospam par pfi.be pour répondre. Merci
"jean - rené grondin" a écrit dans le
message

de news:c8sei4$bms$
Bonjour à tous et à toutes. J'ai une liste comprenant une centaines de
noms

et de prénoms. Les noms sont dans une colonne ( par exemple de A1 à A
100 ),

les prénoms sont dans une deuxième colonne ( par exemple de B1 à
B100 ).



Ces
noms et prénoms correspondent à des élèves de CP, et je dois couper
autant


de lettre qu'il y a par exemple de A de C de L de W de P de E etc.
.....



Pour les prénoms, il y a bien sûr des prénoms composés, et certains
d'entre

eux ont des tirets, d'autres pas. Existe t'il une solution.! Merçi d'y
répondre












Avatar
jean - rené grondin
Bonjour AV. J'essaie ta formule.


"AV" a écrit dans le message news:

Tes noms en A1:A100 - Tes prénoms en B1:B100 (à adapter)
Tu listes les lettres majuscules de l'alphabet de C1 à C26 (A,B,C......Z)
En D1 tu mets la formule suivante :
=SOMMEPROD(NBCAR($A$1:$A$100&$B$1:$B$100)-NBCAR(SUBSTITUE(MAJUSCULE($A$1:$A$
100&
$B$1:$B$100);C1;"")))
Et tu recopies --> C26

AV
Avatar
jean - rené grondin
J'ai essayé ta formule, cela marche super bien, merçi encore. Par contre, je
ne comprend pas la macro de Pascal Engelmajer ci dessous!


"jean - rené grondin" a écrit dans le message
news: c8t687$c7k$
Bonjour AV. J'essaie ta formule.

"AV" a écrit dans le message news:

Tes noms en A1:A100 - Tes prénoms en B1:B100 (à adapter)
Tu listes les lettres majuscules de l'alphabet de C1 à C26 (A,B,C......Z)
En D1 tu mets la formule suivante :
=SOMMEPROD(NBCAR($A$1:$A$100&$B$1:$B$100)-NBCAR(SUBSTITUE(MAJUSCULE($A$1:$A$
100&
$B$1:$B$100);C1;"")))
Et tu recopies --> C26

AV