OVH Cloud OVH Cloud

Je cherche (sans succès) une fonction pour compter des caractères

18 réponses
Avatar
Emile63
Bonjour =E0 tous,

J'ai une variable (description article) et je souhaiterais connaitre combie=
n de fois il a un caract=E8re donn=E9 dans celle-ci.=20
-Existe-t'il une fonction =E0 cet effet ?

Exemple:
MaVariable =3D "Article: 000.000.1234.4567"
Fonction: (Compte "."; MaVariable) =3D 3

Merci d'avance pour votre aide et solutions.

Bonne journ=E9e
Emile

8 réponses

1 2
Avatar
Jacquouille
Bonjour Emile,

Puisque ni la fonction ni l'organe ne fonctionnent, vois avec ceci:

en A1: azertyuiop.abcdef (le fichier appelé azertyuiop avec l'extension
abcdef

où tu veux : --> =CHERCHE(".";A1;NBCAR(A1)-6) --> te donnera la position
du point. Ici, ce sera le 11° car

Pour ce qui est de ta question, dernière phrase, ne serait-ce pas de droite
à gauche?
Si tu n'as que 4 car max dans l'extension, tu peux remplacer le 6 par 5
......
Bonne chance
Jacques.

Jacquouille

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


J'ai bien pris note de vos solutions et vous en remercie, mais à la fin ce
que j'avais en tête ne fonctionne pas. :-(
---------------------------------------
Avec une proc. VBA j'ai besoin à séparer dans une variable: MonExt
uniquement l'extension de fichier des noms de fichiers qui se trouvent
(listés) dans des cellules sur ma feuille de calcul, avec la formule
ci-dessous:
MaCellule="C:WindowsMes fichiersTest.01.15.pdf"

MonExt= LCase(Right(MaCellule, (Len(MaCellule) - InStr(Var, MaCellule,
"."))))

Ça fonctionnait avant, car je recherchais le point qui marque l'extension,
mais depuis l'appellation des fichiers sur la feuille de calcul à un peu
changé, certains noms de fichier contiennent plusieurs point(v/ex:
MaCellule), et d'autre part, les extensions* de certains fichiers contient 4
caractères. Dans la chaîne "MaCellule" Seul le dernier point m'intéresse
pour compter le Nb de caractères de l'extension, mais je ne sais pas comment
m'y prendre pour compter de Gauche à droite, le premier point que je trouve.
-Est-ce que quelqu'un pourrait me porter une main secourable ? :-)

PS: J'espère que ma description est compréhensible pour tous, car en me
relisant, je me demande....

* : pdf, doc, docx, xls, xlsx, xlsm etc..


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

=STXT(A1;CHERCHE(".";A1;NBCAR(A1)-6)+1;10)

Re bonne chance

Jacquouille

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

Bonjour Emile,

Puisque ni la fonction ni l'organe ne fonctionnent, vois avec ceci:

en A1: azertyuiop.abcdef (le fichier appelé azertyuiop avec l'extension
abcdef

où tu veux : --> =CHERCHE(".";A1;NBCAR(A1)-6) --> te donnera la position
du point. Ici, ce sera le 11° car

Pour ce qui est de ta question, dernière phrase, ne serait-ce pas de droite
à gauche?
Si tu n'as que 4 car max dans l'extension, tu peux remplacer le 6 par 5
......
Bonne chance
Jacques.

Jacquouille

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


J'ai bien pris note de vos solutions et vous en remercie, mais à la fin ce
que j'avais en tête ne fonctionne pas. :-(
---------------------------------------
Avec une proc. VBA j'ai besoin à séparer dans une variable: MonExt
uniquement l'extension de fichier des noms de fichiers qui se trouvent
(listés) dans des cellules sur ma feuille de calcul, avec la formule
ci-dessous:
MaCellule="C:WindowsMes fichiersTest.01.15.pdf"

MonExt= LCase(Right(MaCellule, (Len(MaCellule) - InStr(Var, MaCellule,
"."))))

Ça fonctionnait avant, car je recherchais le point qui marque l'extension,
mais depuis l'appellation des fichiers sur la feuille de calcul à un peu
changé, certains noms de fichier contiennent plusieurs point(v/ex:
MaCellule), et d'autre part, les extensions* de certains fichiers contient 4
caractères. Dans la chaîne "MaCellule" Seul le dernier point m'intéresse
pour compter le Nb de caractères de l'extension, mais je ne sais pas comment
m'y prendre pour compter de Gauche à droite, le premier point que je trouve.
-Est-ce que quelqu'un pourrait me porter une main secourable ? :-)

PS: J'espère que ma description est compréhensible pour tous, car en me
relisant, je me demande....

* : pdf, doc, docx, xls, xlsx, xlsm etc..


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


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

Oui, DanielCo, les solutions fonctionnent, c'est à la fin, quand je regro upe un peu tout ça, que ma formule se casse un peu la figure. :-/

Oui, Jacquouille, c'est bien de droite à gauche, c'est la dysfonction de l'organe qui m'a troublé. :-)
(je savais bien que quelque chose n'était pas clair dans ma description) .. ;-)

Avec des fichiers tels que:
123.456.798.xls
123.456.789.xlsx
C:Mes documentsMon historiqueLe fichier 123.456.789.xltm

C'est bien les 3 ou 4 dern. caractères que je souhaite récupérer.

La formule: CHERCHE(".";A1;NBCAR(A1)-4) fonctionne
ainsi que : =STXT(A1;CHERCHE(".";A1;NBCAR(A1)-4)+1;NBCAR(A1))
pour l'extension (car avec le nom du fichier il y a son chemin complet <10 car.).
J'ose demander un dernier coup de main pour traduire formule en fonctions d e VBA ;-)
Merci d'avance pour votre disponibilité.
Emile
Avatar
MichD
Bonjour,

Dans un module standard, tu copies la fonction suivante:

'-------------------------------
Function Last4Digits(Rg As Range)
Last4Digits = Split(Rg, ".")(UBound(Split(Rg, ".")))
End Function
'-------------------------------

Et dans la cellule de la feuille de calcul de ton choix, tu écris :
=Last4Digits(A1)
En supposant que A1 contient le nom du fichier.
Avatar
MichD
Pour être un peu plus précis, tu peux modifier la fonction
comme ceci pour obtenir la dernière section de la chaîne
de caractères d'une cellule située après le dernier point,
peu importe le contenu de la cellule. Si la cellule ne contient pas
de point, la fonction retourne ""

Function Last4Digits(Rg As Range)
If InStr(1, Rg, ".", vbTextCompare) > 0 Then
Last4Digits = Split(Rg, ".")(UBound(Split(Rg, ".")))
Else
Last4Digits = ""
End If
End Function
Avatar
Emile63
Merci MichD pour cette fonction.
C'est (un fois de plus) parfait.
Je ne connaissait cette fonction "split" ni ce qu'elle fait concrètement (ce n'est apparemment pas de mon niveau, et j'ai bien compris qu'il me rest e beaucoup à apprendre).
Mais ça fonctionne comme je l'espérais. :-))
Encore merci et bonne journée à tous.
Emile
Avatar
MichD
| Je ne connaissait cette fonction "split" ni ce qu'elle fait concrètement

Elle scinde le contenu d'une chaîne de caractères selon ce que l'on désigne comme
second élément de la fonction.

Dim Char As String, Dim X()
Char = "La maison est belle"

x = Split(char," ")

Le résultat s'affiche dans la variable qui est de type "Tableau" (array)
x(0) = "La"
x(1) = "maison"
x(2) = "est"
x(3) = "belle"

La phrase a été scinder par le caractère ASCII "ESPACE" ou CHR(32).
Chaque section est mise dans une variable "Array". Tu peux alors extraire la
section de ton choix

Msgbox X(3) par exemple.
Avatar
Emile63
Merci MichD,

- Je vais garder précieusement cette explication.
Cordialement,
Emile
1 2