Optimisation de formule
Résolu
pzyko
Messages postés
34
Date d'inscription
Statut
Membre
Dernière intervention
-
pzyko Messages postés 34 Date d'inscription Statut Membre Dernière intervention -
pzyko Messages postés 34 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Optimisation de formule
- Optimisation pc - Accueil - Utilitaires
- Formule si et - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Formule mathématique - Télécharger - Études & Formations
- Formule somme excel colonne - Guide
7 réponses
Option Explicit
Option Base 1
'-------
Sub tester_colF()
Dim Derlig As Long, T_choix(), T_colF(), T_colA()
Dim Idx As Long, Cptr As Byte, Ref As String
T_choix = Array("ZAZA1", "ZAZA2", "ZAZA3")
Application.ScreenUpdating = False
With Sheets(1)
Derlig = .Columns("F").Find("*", , , , , xlPrevious).Row
T_colF = Application.Transpose(.Range("F2:F" & Derlig))
End With
ReDim T_colA(Derlig - 1)
For Idx = 1 To UBound(T_colF)
Ref = UCase(T_colF(Idx))
For Cptr = 1 To UBound(T_choix)
If InStr(1, Ref, T_choix(Cptr)) > 0 Then
T_colA(Idx) = 1
Exit For
Else
T_colA(Idx) = 0
End If
Next Cptr
Next Idx
With Sheets(2)
.Range("A2:A30000").ClearContents 'a adapter svt nbre lignes maxi
.Range("A2").Resize(Derlig - 1) = Application.Transpose(T_colA)
.Activate
End With
End Sub
Bonjour
Combien de lignes environ ?
D'où vient la liste des bestioles : existe t'il dans un coin de ton classeur une sélection de chien, chat... combien d'éléments possible
en VBa savoir le nombre de lignes est important pour le choix d'une méthode de codage
dans l'attente
Michel
Combien de lignes environ ?
D'où vient la liste des bestioles : existe t'il dans un coin de ton classeur une sélection de chien, chat... combien d'éléments possible
en VBa savoir le nombre de lignes est important pour le choix d'une méthode de codage
dans l'attente
Michel
Comme pas de réponses et peu de temps pour cet aprèm....
Solution avec nbre de lignes important
Maquette de W
https://www.cjoint.com/?DGjmHMR3AG5
Michel
Solution avec nbre de lignes important
Option Explicit
Option Base 1
'-------
Sub tester_colF()
Dim Derlig As Long, T_choix(), T_colF(), T_colA()
Dim D_choix As Object, Idx As Long
T_choix = Array("ZAZA1", "ZAZA2", "ZAZA5")
Application.ScreenUpdating = False
With Sheets(1)
Derlig = .Columns("F").Find("*", , , , , xlPrevious).Row
T_colF = Application.Transpose(.Range("F2:F" & Derlig))
End With
ReDim T_colA(Derlig - 1)
Set D_choix = CreateObject("scripting.dictionary")
For Idx = 1 To UBound(T_choix)
D_choix.Add T_choix(Idx), ""
Next
For Idx = 1 To UBound(T_colF)
If D_choix.exists(UCase(T_colF(Idx))) Then
T_colA(Idx) = 1
Else
T_colA(Idx) = 0
End If
Next
With Sheets(2)
.Range("A2:A100000").Clear 'a adapter svt nbre lignes maxi
.Range("A2").Resize(Derlig - 1) = Application.Transpose(T_colA)
.Activate
End With
End Sub
Maquette de W
https://www.cjoint.com/?DGjmHMR3AG5
Michel
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Je n'arrive pas à adapter ta formule, le problème c'est que la cellule dans laquelle je cherche le mot cible ne contient pas seulement 1 mot. Elle peut en contenir beaucoup et il faut que je vérifie qu'elle contient le mot que je chercher parmis l'ensemble des caractères de la cellule.
Ta solution ne marche que si la cellule contient uniquement l'un des mots cherchés.
Ta solution ne marche que si la cellule contient uniquement l'un des mots cherchés.
Bonjour,
Je rejoins Michel_M (mes amitiés au passage). Pourquoi ne l'avoir pas dit au départ ?
Il est des informations essentielles qui font que le code sera radicalement différent. Celle-ci en fait partie.
Le nombre de lignes (demandé par Michel dans sa première réponse) également.
Extrait de la charte de notre site :
Description du problème
Lorsqu'un utilisateur poste un message concernant son problème, il connaît généralement le contexte de celui-ci. Or les usagers du forum ne peuvent lui venir en aide que s'ils savent de quel logiciel il s'agit, sur quel système d'exploitation, éventuellement le matériel concerné.
Il est donc essentiel de décrire l'erreur de la façon la plus complète possible
Le code, et donc le travail bénévole, fourni par Michel ne peut pas convenir à votre situation. A vous d'en tenir compte en communiquant :
- tous les détails de votre classeur (nom du classeur, noms des feuilles concernées, etc.),
- le nombre de lignes, de colonnes,
- qu'elle est la colonne concernée par la recherche,
- le type de données contenues dans les cellules ou vous cherchez votre "mot" (on ne cherchera pas de la même manière 111 dans "123 456789 111 2569" que chien dans "mon chien est bleu"),
- Pourquoi vouloir indiquer 1 et 0 en colonne A? Si c'est pour repérer les lignes concernées, il est peut être préférable d'en établir la liste, voire de filtrer la feuille en fonction de cela...
Dans l'absolu, et nous ne nous lasserons pas de le répéter, un classeur exemple contenant des données du même type, classées dans les mêmes colonnes, mais avec un nombre de lignes moindre est idéal.
Voilà, bonne continuation et bonne journée à vous deux.
Je rejoins Michel_M (mes amitiés au passage). Pourquoi ne l'avoir pas dit au départ ?
Il est des informations essentielles qui font que le code sera radicalement différent. Celle-ci en fait partie.
Le nombre de lignes (demandé par Michel dans sa première réponse) également.
Extrait de la charte de notre site :
Description du problème
Lorsqu'un utilisateur poste un message concernant son problème, il connaît généralement le contexte de celui-ci. Or les usagers du forum ne peuvent lui venir en aide que s'ils savent de quel logiciel il s'agit, sur quel système d'exploitation, éventuellement le matériel concerné.
Il est donc essentiel de décrire l'erreur de la façon la plus complète possible
Le code, et donc le travail bénévole, fourni par Michel ne peut pas convenir à votre situation. A vous d'en tenir compte en communiquant :
- tous les détails de votre classeur (nom du classeur, noms des feuilles concernées, etc.),
- le nombre de lignes, de colonnes,
- qu'elle est la colonne concernée par la recherche,
- le type de données contenues dans les cellules ou vous cherchez votre "mot" (on ne cherchera pas de la même manière 111 dans "123 456789 111 2569" que chien dans "mon chien est bleu"),
- Pourquoi vouloir indiquer 1 et 0 en colonne A? Si c'est pour repérer les lignes concernées, il est peut être préférable d'en établir la liste, voire de filtrer la feuille en fonction de cela...
Dans l'absolu, et nous ne nous lasserons pas de le répéter, un classeur exemple contenant des données du même type, classées dans les mêmes colonnes, mais avec un nombre de lignes moindre est idéal.
Pour transmettre un fichier, il faut passer par un site de pièce jointe tel que https://www.cjoint.com/
Va sur ce site,
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...
Voilà, bonne continuation et bonne journée à vous deux.
Je suis vraiment désolé de t'avoir fait perdre du temps, je connais pourtant la charte et suis conscient qu'il est nécessaire d'apporter tous les éléments du problème pour trouver la solution correspondante.
J'étais persuadé d'avoir joint le fichier ci-dessous mais en fait je l'avais joint à un post précédent sur ce forum m'ayant permis de trouver le code tout en haut.
https://www.cjoint.com/?0Gikya94oTk
Pour plus d'explications :
Je recherche ces mots clés (les noms d'animaux dans le fichier joint) dans la colonne F de ma feuille Feuil1 qui contient dans mon vrai fichier des informations sur des clients.
Le principe, c'est que sur ma Feuil2, j'ai différents libellés de colonnes qui correspondent à des types de clients différents. Je sais si un client appartient à un type de client grâce à des mots clés que je recherche dans la colonne F de la Feuil1. Pour chaque client, je teste l'appartenance à chacun des types de clients.
Prenons l'exemple d'un client dont je teste l'appartenance au type de client précisé dans le libellé de la colonne A de la feuille 2 :
Si pour le client situé à la ligne 2 de ma Feuil1, l'un des mots clés (me permettant de dire que le client appartient au type de client correspondant à la colonne A de la feuil2) est trouvé en colonne F de la Feuil1, je veux qu'il me mette un 1 dans la ligne 2 de la colonne A de la Feuil2, sinon un 0. Je veux donc tester cela pour chaque client contenu dans ma Feuil1. Pour le client à la ligne 3, je voudrais un 1 ou un 0 à la ligne 3 de la colonne A de la Feuil2...
Ce nombre de clients (de lignes) peut être très variable (de 100 à plus de 10 000) et change très régulièrement.
Je réaliserai ensuite cette même opération pour le type de client de la colonne B de la feuille 2, auquel correspondront d'autres mots clés.
Je le ferai ensuite pour la colonne C, puis la D... Ce nombre de colonnes sur la feuil2, donc le nombre de types de clients, peut également varier.
Ces 1 et ces 0 me permettent ensuite de faire une série de calculs puis de générer des TCD et des graphes. En réalité, je dois intégrer ce code dans ma macro complète qui réalise toute une série d'opérations en 1 click.
Merci
J'étais persuadé d'avoir joint le fichier ci-dessous mais en fait je l'avais joint à un post précédent sur ce forum m'ayant permis de trouver le code tout en haut.
https://www.cjoint.com/?0Gikya94oTk
Pour plus d'explications :
Je recherche ces mots clés (les noms d'animaux dans le fichier joint) dans la colonne F de ma feuille Feuil1 qui contient dans mon vrai fichier des informations sur des clients.
Le principe, c'est que sur ma Feuil2, j'ai différents libellés de colonnes qui correspondent à des types de clients différents. Je sais si un client appartient à un type de client grâce à des mots clés que je recherche dans la colonne F de la Feuil1. Pour chaque client, je teste l'appartenance à chacun des types de clients.
Prenons l'exemple d'un client dont je teste l'appartenance au type de client précisé dans le libellé de la colonne A de la feuille 2 :
Si pour le client situé à la ligne 2 de ma Feuil1, l'un des mots clés (me permettant de dire que le client appartient au type de client correspondant à la colonne A de la feuil2) est trouvé en colonne F de la Feuil1, je veux qu'il me mette un 1 dans la ligne 2 de la colonne A de la Feuil2, sinon un 0. Je veux donc tester cela pour chaque client contenu dans ma Feuil1. Pour le client à la ligne 3, je voudrais un 1 ou un 0 à la ligne 3 de la colonne A de la Feuil2...
Ce nombre de clients (de lignes) peut être très variable (de 100 à plus de 10 000) et change très régulièrement.
Je réaliserai ensuite cette même opération pour le type de client de la colonne B de la feuille 2, auquel correspondront d'autres mots clés.
Je le ferai ensuite pour la colonne C, puis la D... Ce nombre de colonnes sur la feuil2, donc le nombre de types de clients, peut également varier.
Ces 1 et ces 0 me permettent ensuite de faire une série de calculs puis de générer des TCD et des graphes. En réalité, je dois intégrer ce code dans ma macro complète qui réalise toute une série d'opérations en 1 click.
Merci
Bonjour,
La réponse matinale de Michel (ICI) réponds, normalement, complètement à tes attentes.
A tester.
La réponse matinale de Michel (ICI) réponds, normalement, complètement à tes attentes.
A tester.