Formule RECEXCOMP ??

goldorak62

XLDnaute Nouveau
Bonjour,
Pour les besoins d'une application, je doit extraire des données d'un tableau excel.
A un certain moment, je suis obligé d'utiliser une fonction de macro complémentaire trouvé sur le net (fonction de test de la présence d'une chaine de caractéres), mais a part installer cette macro sur tous les postes, la fonction ne fonctionne que sur le mien.
1) N'y aurais t'il pas une fonction incorporée à excel qui aurait les mêmes caractériestiques et remplacer REGEX.COMP?
Je joint la fonction utilisée :
cellule=SOMMEPROD(((BDD!$M$8:$M$1596='CURATIF')+(BDD!$M$8:$M$1596='ASTREINTE'))*(REGEX.COMP(BDD!$E$8:$E$1596;'PONT'))*(BDD!$T$8:$T$1596>=$C$4)*(BDD!$T$8:$T$1596<=$E$4);BDD!$A$8:$A$1596)

La recherche de la chaine de caractères est 'PONT' parmis les cellules contenant 'PONT 45'; 'PONT 12'; 'PONT 655', etc ...

2) Est il possible de créer une macro VBA qui ferait cette extraction?

Merci pour votre aide

Pascal
 

Jocelyn

XLDnaute Barbatruc
Bonjour le Forum,
Bonjour goldorak62,

Je ne sais pas pourquoi tu veux changer une partie de ta formule mais je pense que tu peux changer :
REGEX.COMP(BDD!$E$8:$E$1596;\\'PONT\\')

par :

GAUCHE(BDD!$E$8:$E$1596;4)='pont'

a condition toute fois que pont soit toujour placé devant donc occupe les 4 premiers caracteres de tes cellules

en ce qui concerne le VBA je penses que c'est faisable mais je n'en suis pas capable

Jocelyn
 

Jocelyn

XLDnaute Barbatruc
Re bonjour,

hum hum bizard j'ai essayé et ca fonctionne trés bien chez moi.

Bon essai de changer comme ca =SOMMEPROD(((BDD!$M$8:$M$1596=\\'CURATIF\\')+(BDD!$M$8:$M$1596=\\'ASTREINTE\\'))*(REGEX.COMP(BDD!$E$8:$E$1596;\\'PONT\\'))*(BDD!$T$8:$T$1596>=$C$4)*(BDD!$T$8:$T$1596=$C$4)*(BDD!$T$8:$T$1596<=$E$4);BDD!$A$8:$A$1596)

si vraiment cela ne marche pas essai de joindre un fichier c'est plus simple pour regardé ce qui ne va pas

pour joindre un fichier regarde le tutoriel

Lien supprimé

Jocelyn
 

Jocelyn

XLDnaute Barbatruc
arf il a pas pris la fortmule ou je l'ai pas mise

=SOMMEPROD(((BDD!$M$8:$M$1596='CURATIF')+(BDD!$M$8:$M$1596='ASTREINTE'))*(GAUCHE(BDD!$E$8:$E$1596;4)='pont')*(BDD!$T$8:$T$1596>=$C$4)*(BDD!$T$8:$T$1596<=$E$4);BDD!$A$8:$A$1596)

voila cette fois je l'ai mise

Jocelyn

Message édité par: Jocelyn, à: 23/01/2006 13:13

Message édité par: Jocelyn, à: 23/01/2006 13:14
 

goldorak62

XLDnaute Nouveau
Merci
C'est bon, ca marche mais si je rajoute une condition, j'ai de nouveau l'erreur #NA

Exemple : =SOMMEPROD(((BDD!$M$8:$M$1596='CURATIF')+(BDD!$M$8:$M$1596='ASTREINTE'))*(BDD!$C$8:$C$2000='EGE')*(GAUCHE(BDD!$E$8:$E$1596;4)='PONT')*(BDD!$T$8:$T$1596>=$C$4)*(BDD!$T$8:$T$1596<=$E$4);BDD!$A$8:$A$1596)

Je pense que la fonction SOMMEPROD est peut être limitée en arguments!
En tout cas, merci pour ton aide.

Pascal
 

Jocelyn

XLDnaute Barbatruc
re bonjour

ce n'est pas un probleme de limite de sommeprod mais plustot un problème de définition de plage dans ta formule la partie :

(BDD!$C$8:$C$2000='EGE') vas jusqu'a la ligne 2000 alors que toutes les autre s'arrete a 1596 si tu ecris
(BDD!$C$8:$C$1596='EGE') je pense que l'erreur #NA! va disparaitre

avec somme prod toute les plages doivent avoir la même grandeure

Jocelyn
 

sunnyland

XLDnaute Nouveau
Je vois que tu as eu plusieurs solutions deja.

Voila je t'en envoie une de plus. Jette un coup d'oeil et dis moi ce que tu en penses.

Le seul probleme j'ai une version anglaise d'Office, je n'habite pas en France. Je te fournie des explications qui j'espere seront utiles.
La recherche peut se faire sur partie de mots pas necessairement sur les premieres lettres. Je ne sais pas si c'est ce que tu recherchais.

Bybye for Now. [file name=UneReponsePascal.zip size=8174]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/UneReponsePascal.zip[/file]
 

Pièces jointes

  • UneReponsePascal.zip
    8 KB · Affichages: 36

Statistiques des forums

Discussions
312 221
Messages
2 086 382
Membres
103 199
dernier inscrit
ATS1