Optimisation de formule
Résolu/Fermé
pzyko
Messages postés
34
Date d'inscription
vendredi 27 juin 2014
Statut
Membre
Dernière intervention
8 août 2014
-
Modifié par pijaku le 11/07/2014 à 07:39
pzyko Messages postés 34 Date d'inscription vendredi 27 juin 2014 Statut Membre Dernière intervention 8 août 2014 - 11 juil. 2014 à 11:00
pzyko Messages postés 34 Date d'inscription vendredi 27 juin 2014 Statut Membre Dernière intervention 8 août 2014 - 11 juil. 2014 à 11:00
A voir également:
- Optimisation de formule
- Formule excel - Guide
- Optimisation pc - Guide
- Formule si et - Guide
- Formule moyenne excel - Guide
- Formule excel pour additionner plusieurs cellules - Guide
7 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
11 juil. 2014 à 08:08
11 juil. 2014 à 08:08
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
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
Modifié par michel_m le 9/07/2014 à 11:21
Modifié par michel_m le 9/07/2014 à 11:21
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
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
Modifié par michel_m le 9/07/2014 à 12:34
Modifié par michel_m le 9/07/2014 à 12:34
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
pzyko
Messages postés
34
Date d'inscription
vendredi 27 juin 2014
Statut
Membre
Dernière intervention
8 août 2014
1
10 juil. 2014 à 09:21
10 juil. 2014 à 09:21
Désolé, j'ai du partir tôt hier, je n'avais plus accès à internet.
Je teste ta solution
Je teste ta solution
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
pzyko
Messages postés
34
Date d'inscription
vendredi 27 juin 2014
Statut
Membre
Dernière intervention
8 août 2014
1
10 juil. 2014 à 16:19
10 juil. 2014 à 16:19
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.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
10 juil. 2014 à 17:28
10 juil. 2014 à 17:28
le problème c'est que la cellule dans laquelle je cherche le mot cible ne contient pas seulement 1 mot
Pourquoi ne l'avoir pas dit au départ ?
Pourquoi ne l'avoir pas dit au départ ?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
11 juil. 2014 à 08:09
11 juil. 2014 à 08:09
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.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
11 juil. 2014 à 10:17
11 juil. 2014 à 10:17
Bonjour Franck
Merci
Très bon texte
Merci
Très bon texte
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
11 juil. 2014 à 10:25
11 juil. 2014 à 10:25
Merci Michel.
J'ai pris le temps, mais je crois que je vais le conserver... Il devrait resservir... régulièrement!
Bonne journée et bon week end à toi.
J'ai pris le temps, mais je crois que je vais le conserver... Il devrait resservir... régulièrement!
Bonne journée et bon week end à toi.
pzyko
Messages postés
34
Date d'inscription
vendredi 27 juin 2014
Statut
Membre
Dernière intervention
8 août 2014
1
11 juil. 2014 à 09:48
11 juil. 2014 à 09:48
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
11 juil. 2014 à 09:50
11 juil. 2014 à 09:50
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.
pzyko
Messages postés
34
Date d'inscription
vendredi 27 juin 2014
Statut
Membre
Dernière intervention
8 août 2014
1
11 juil. 2014 à 11:00
11 juil. 2014 à 11:00
Ce code marche parfaitement, merci beaucoup !