Menu

Aide Excel : Parcourir un tableau [Résolu]

Kyukuro1 6 Messages postés mercredi 11 avril 2018Date d'inscription 15 juillet 2018 Dernière intervention - 11 avril 2018 à 21:34 - Dernière réponse : Kyukuro1 6 Messages postés mercredi 11 avril 2018Date d'inscription 15 juillet 2018 Dernière intervention
- 12 avril 2018 à 09:53
Bonjour,

Je bloque actuellement sur Excel et suis à la recherche d'aide concernant une formule pour parcourir mon tableau.

J'explique : J'ai une colonne A qui contient des URLs d'un site Internet. Je souhaite que dans la colonne B, la formule m'indique soit un 1, soit un 0, si elle trouve dans une cellule, un des caractères que j'ai listés dans la colonne C.

Si vous avez une idée autre ou des pistes ou une réponse, je suis preneur . Merci :)

Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
gbinforme 15097 Messages postés lundi 18 octobre 2004Date d'inscriptionContributeurStatut 23 juin 2018 Dernière intervention - 11 avril 2018 à 22:55
1
Merci
Bonjour,

C'est tout à fait possible de le faire avec une formule comme celle-ci :
=SI(SOMMEPROD(NB.SI($C$1:$C$30;STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1)));1;0)

Merci gbinforme 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

CCM a aidé 22504 internautes ce mois-ci

via55 9439 Messages postés mercredi 16 janvier 2013Date d'inscription 19 juillet 2018 Dernière intervention - 11 avril 2018 à 22:59
Salut et bravo gbinforme !

Je n'aurais jamais été jusque là, d'ailleurs j'ai un peu de mal à en comprendre le fonctionnement
Peux tu expliciter un peu s'il te plait ?

Bien cordialement
Via
gbinforme 15097 Messages postés lundi 18 octobre 2004Date d'inscriptionContributeurStatut 23 juin 2018 Dernière intervention - 11 avril 2018 à 23:15
Salut via55,

C'est vraiment basique de chez basique :
- SI pour avoir 0 ou 1
- SOMMEPROD pour passer en matricielle et cumuler le résultat
- NB.SI($C$1:$C$30 avec la liste des caractères à tester
- STXT(A1 pour isoler chaque caractère
- LIGNE(INDIRECT("1:"&NBCAR(A1)) pour la taille du texte à parcourir

Rien de complexe donc mis à part la syntaxe précise comme dans toute fonction

Bonne nuit maintenant
Kyukuro1 6 Messages postés mercredi 11 avril 2018Date d'inscription 15 juillet 2018 Dernière intervention - 12 avril 2018 à 01:22
Super merci beaucoup à toi (je n'avais pas vu ton message, pardon). D'un point de vue "temps de traitement" qu'est ce qui est le plus efficace ? Mettre en place ta formule ou alors la fonction que m'a proposé Via55 ? =)
gbinforme 15097 Messages postés lundi 18 octobre 2004Date d'inscriptionContributeurStatut 23 juin 2018 Dernière intervention - 12 avril 2018 à 08:41
Bonjour,

qu'est ce qui est le plus efficace ?
Cela est difficile à quantifier mais les fonctions natives d'excel sont codées en langage compilé et sont testées et validées sans erreur. Les fonctions écrites en VBA le sont en langage interprété qui est nécessairement moins efficient du fait de l'interprétation et sont sujettes au bug d'écriture car personne ne valide sauf l'auteur.
En règle générale il est préférable d'utiliser les fonctions excel pour tout calcul alors que le VBA est très utile pour accomplir les taches répétitives, spécifiques et longues qui ne sont pas au catalogue bien fourni des fonctions et pour cause car elles sont liées à la spécificité de la tache à accomplir.
Kyukuro1 6 Messages postés mercredi 11 avril 2018Date d'inscription 15 juillet 2018 Dernière intervention - 12 avril 2018 à 09:53
Merci beaucoup pour ces détails précis, je vais donc partir sur ta formule plutôt que la fonction personnalisée de Via. Je la garde toutefois précieusement.

Merci à vous deux :)
Commenter la réponse de gbinforme
via55 9439 Messages postés mercredi 16 janvier 2013Date d'inscription 19 juillet 2018 Dernière intervention - 11 avril 2018 à 21:55
0
Merci
Bonjour Kyukuro

1) Tu auras toujours la réponse OUI car dan ta liste il y a le caractère / !

2) Par formule pas possible mais par fonction personnalisée oui
En supposant la liste des caractères spéciaux en C2:C30 fonction personnalisée à mettre dans un module de l'éditeur VBA (ALT+F11 pour ouvrir Editeur - Insertion - Module - copier coller la macro dans la page blanche - fermer Editeur)
Function car_spec(plage As Range)
texte = plage.Value
For n = 1 To Len(texte)
c = Mid(texte, n, 1)
If Application.WorksheetFunction.CountIf(Range("C2:C30"), c) = 1 Then existe = 1
Next
If existe = 1 Then car_spec = "OUI" Else car_spec = "NON"
End Function


La fonction s'utilise alors comme toute fonction Excel avec la syntaxte : =car_spec(cellule à traiter)
ainsi en B2 ce sera =car_spec(A2)

Cdlmnt
Via
Kyukuro1 6 Messages postés mercredi 11 avril 2018Date d'inscription 15 juillet 2018 Dernière intervention - 11 avril 2018 à 22:13
Bonjour Via,
Merci beaucoup pour ta réponse très rapide ! Je suis actuellement entrain d'essayer de la mettre en place. J'ai toutefois une question, est ce que la fonction personnalisée est liée au document en question ?

Je souhaite pouvoir ensuite partager mon document et m'en servir comme modèle.

Merci, je te tiens au courant de son efficacité ! :)

Bonne soirée

Kyukuro
Commenter la réponse de via55
via55 9439 Messages postés mercredi 16 janvier 2013Date d'inscription 19 juillet 2018 Dernière intervention - 11 avril 2018 à 22:42
0
Merci
Re,

Le classeur doit être enregistré sous format prenant en charge les macros
Si tu communiques une copie de ce classeur la macro s'appliquera

Si c'est un classeur partagé cela devrait fonctionner aussi, à vérifier néanmoins

Bonne soirée également


Kyukuro1 6 Messages postés mercredi 11 avril 2018Date d'inscription 15 juillet 2018 Dernière intervention - 12 avril 2018 à 01:21
Je viens de mettre en place tout ça sur mon Excel, tout fonctionne parfaitement.

Merci :)
Commenter la réponse de via55