Aide Excel : Parcourir un tableau
Résolu/Fermé
Kyukuro1
Messages postés
6
Date d'inscription
mercredi 11 avril 2018
Statut
Membre
Dernière intervention
15 juillet 2018
-
Modifié le 11 avril 2018 à 21:35
Kyukuro1 Messages postés 6 Date d'inscription mercredi 11 avril 2018 Statut Membre Dernière intervention 15 juillet 2018 - 12 avril 2018 à 09:53
Kyukuro1 Messages postés 6 Date d'inscription mercredi 11 avril 2018 Statut Membre Dernière intervention 15 juillet 2018 - 12 avril 2018 à 09:53
A voir également:
- Parcourir un tableau vba
- Liste déroulante excel - Guide
- Formule excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Mise en forme conditionnelle excel - Guide
3 réponses
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 684
11 avril 2018 à 22:55
11 avril 2018 à 22:55
Bonjour,
C'est tout à fait possible de le faire avec une formule comme celle-ci :
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)
via55
Messages postés
14405
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
25 avril 2024
2 703
11 avril 2018 à 21:55
11 avril 2018 à 21:55
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)
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
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
Messages postés
6
Date d'inscription
mercredi 11 avril 2018
Statut
Membre
Dernière intervention
15 juillet 2018
11 avril 2018 à 22:13
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
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
via55
Messages postés
14405
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
25 avril 2024
2 703
11 avril 2018 à 22:42
11 avril 2018 à 22:42
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
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
Messages postés
6
Date d'inscription
mercredi 11 avril 2018
Statut
Membre
Dernière intervention
15 juillet 2018
12 avril 2018 à 01:21
12 avril 2018 à 01:21
Je viens de mettre en place tout ça sur mon Excel, tout fonctionne parfaitement.
Merci :)
Merci :)
11 avril 2018 à 22:59
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
11 avril 2018 à 23:15
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
12 avril 2018 à 01:22
12 avril 2018 à 08:41
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.
12 avril 2018 à 09:53
Merci à vous deux :)