récupération de données en fin de cellule

  • Initiateur de la discussion Initiateur de la discussion sri75
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

sri75

XLDnaute Occasionnel
Bonjour je travaille sur des fichiers dont les cellules contiennent du texte et du numérique.

le numérique est toujours en fin de ligne

TOTAL A ................................ 305 480
B - A DEDUIRE ;
* TAXE PROFESSIONNELLE ; 5 613
- ASSURANCE MALADIE OBLIGATOIRE 9 687

je cherche une macro pour récuperer la valeur numérique en bout de ligne.

( fichier joint )

Merci pour vos conseils
 

Pièces jointes

Re : récupération de données en fin de cellule

Bonjour


Avec une UDF en VBA (utilisant regexp)

Code:
Function numseul(r As Range)
Dim chiffres As String
Dim oReg As Object
Set oReg = CreateObject("vbscript.regexp")
With oReg
.Global = True
.IgnoreCase = True
.Pattern = "\D"
chiffres = .Replace(r.Text, "")
End With
numseul = IIf(Val(chiffres) = 0, vbNullString, Val(chiffres))
End Function


PS: c'est possible aussi en formule
 
Dernière édition:
Re : récupération de données en fin de cellule

Merci, j'avoue mal dominer l'utilisation d'une fonction et je ne comprends pas où la placer dans ma macro pour l'utiliser.

par exemple en général je me place sur la cellule et j'utilise taxepro=activecell.value

comment lancer cette fonction si ma variable est taxepro ?

merci d'éclairer ma lanterne sur ce point.
 
Re : récupération de données en fin de cellule

Re

Tu utilises comme une formule classique

si en A1 tu as : TOTAL A ................................ 305 480

en b1: =numseul(A1)

renvoiera : 305480


Au préalable, tu auras copié le code VBA dans un module standard.
dans la le classeur contenant tes données.

Autrement comme je le disais précédemment une solution par formule parmi d'autres
( à tester avec tes données)

en B1:
Code:
=STXT(A1;MIN(TROUVE({0.1.2.3.4.5.6.7.8.9};A1&"0123456789"));SOMME(1+NBCAR(A1)-NBCAR(SUBSTITUE(A1;{0.1.2.3.4.5.6.7.8.9};""))))*1
 
Dernière édition:
Re : récupération de données en fin de cellule

Re


Une autre formule pour la route

Code:
=SI(ESTERREUR(STXT(A1;MIN(CHERCHE({0.1.2.3.4.5.6.7.8.9};A1&"0123456789"));(NBCAR(A1)+1)-MIN(CHERCHE({0.1.2.3.4.5.6.7.8.9};A1&"0123456789")))*1);"";STXT(A1;MIN(CHERCHE({0.1.2.3.4.5.6.7.8.9};A1&"0123456789"));(NBCAR(A1)+1)-MIN(CHERCHE({0.1.2.3.4.5.6.7.8.9};A1&"0123456789")))*1)
 
Re : récupération de données en fin de cellule

Une dernière question ; dans mes fichiers parfois il y a un chiffre en fin de cellule et parfois il n'y en a pas. Par contre je dois prévoir tous les cas et définir une variable par cellule.

ex a1=a
a2=b etc...

si fin en fin de macro j'ecris resultat = a + b et qu'en a1 il n'y avait pas de chiffre , ma variable vaut alors "" et l'addition génère une erreur.

Si en début de macro j'ecris dim a as long , a vaut zero mais j'ai une erreur 13 "incompatibilité" qui plante ma macro.

Une dernière astuce pour contourner ce problème ?

Merci d'avance.
 
Re : récupération de données en fin de cellule

Re


Essayes en modifiant la function numseul comme ci-dessous
A la place de
numseul = IIf(Val(chiffres) = 0, vbNullString, Val(chiffres))

mettre

numseul = IIf(Val(chiffres) = 0, 0, Val(chiffres))
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
38
Affichages
2 K
Réponses
11
Affichages
735
Retour