Activation Macro au click

Bonjour,

Je développe une petite macro afin de nous simplifier la vie dans la collecte de data sur l'environnement.
J'ai actuellement 2 soucis :
- le premier concerne la feuille n°2. J'ai créer un petit outil de recherche avec un mot clé qui permet rapidement de se repérer dans une liste de 250 ligne. Sauf que la barre de recherche ne se met pas à jour "en temps réel", c'est a dire que l'on ne voit pas ce que l'on tape ou efface.
- le second feuille n°3. Je voudrais activer les loops au click sur le bouton ''générer les graphiques". Cependant je n'arrive pas a activer ca. Les fonctions s'activent lorsque je les lancent en mode développeur mais pour un autre utilisateur, ca ne passe pas.
Avez vous une idée de comment résoudre ca ?

UN GRAND MERCI D'AVANCE :D

Bonjour et bienvenue

- le premier concerne la feuille n°2. J'ai créer un petit outil de recherche avec un mot clé qui permet rapidement de se repérer dans une liste de 250 ligne. Sauf que la barre de recherche ne se met pas à jour "en temps réel", c'est a dire que l'on ne voit pas ce que l'on tape ou efface.

Et si, dans le code Textbox1_change (situé dans votre feuille 2), vous désactivez la ligne Application.ScreenUpdating = False....

Cordialement

Edit : pensez à mettre votre version excel dans votre profil. Excel FR ne veut pas dire grand chose mais plutôt --> 2016, 2019, Excel 97, MAC 2019 ????

Merci Dan pour votre retour, j'ai fait les modif dans mon profil.

Concernant la ligne de texte, ca ne change rien lors de l'utilisation

Concernant la ligne de texte, ca ne change rien lors de l'utilisation

Je n'ai pas de souci de mon coté. Si je tapes une lettre je la vois bien en temps réel dans la textbox

A moins que je n'ai pas bien compris votre problème

Par contre, si je comprends le code, cette ligne est exécutée chaque fois. Est-ce nécessaire ?

Range("C14:C264").Interior.ColorIndex = 2

Ca doit venir de chez moi en effet, sur un autre ordi ca fonctionne parfaitement.
Bon tant mieux.

Concernant le script, il n'est sans doute pas optimisé. Je me lance juste dans VBA.
J'ai envie de dire "du moment que ca marche" dans un premier temps...

Par contre en parcourant un peu, vous pourriez modifier ceci

1. Private Sub TextBox1_Change(), Remplacez cette ligne :

Range("C14:C" & Range("C" & Rows.Count).End(xlUp).Row).Interior.ColorIndex = 2

Comme cela si vous rajoutez une donnée en C265 et plus bas, vous n'avez plus besoin de modifier le code

2. dans la Private Sub ListBox1_Click()

Ces lignes peuvent être supprimées puisque vous remettez à jour la couleur avec la recherche dans la textbox1_change.

For Ligne = 14 To 264
    Cells(Ligne, 1).Interior.ColorIndex = 2
Next

cela accélère le code là... au click dans votre liste

3. Bouton EFFACER, vous auriez pu simplifier en n'utilisant pas d'USF mais plutôt une MSGBOX qui vous demande de confirmer l'effacement. Je vous donne le code ?


Edit : Code Effacer

1. Dans le module 1, supprimez tous les codes et remplacez le par celui ci-dessous

Sub effacer()

If MsgBox("Voulez-vous effacer les données ?", vbYesNo + vbDefaultButton2, "Effacement des donnée") = vbYes Then
    With ActiveSheet
        .Range("D14:D" & .Range("D" & Rows.Count).End(xlUp).Row).ClearContents
    End With
End If
End Sub

2. Associer votre bouton Effacer les données à ce code
3. Supprimez votre USF Effacer

Super merci pour la simplification du script de cette feuille la ! c'es top !

Je vais essayer de me baser sur ca pour la 3ème

Je vais essayer de me baser sur ca pour la 3ème

C'est à dire ?

- le second feuille n°3. Je voudrais activer les loops au click sur le bouton ''générer les graphiques".

En fait votre bouton sur la feuille 3 n'est pas associé au code.
Vous voulez faire quoi en fait ?

D'associer le code au bouton, je pense qu'il me manque cette étape.
Je ne sais pas pourquoi je n'y arrive pas sur la feuille 3 contrairement à la feuille 2

Je ne sais pas pourquoi je n'y arrive pas sur la feuille 3 contrairement à la feuille 2

heu... je n'ai pas compris.
Par contre attention que vous avez deux boutons sur la feuille. Un fait avec ActiveX et l'autre pas. L'orange pointe sur le code dans la feuille tandis que l'autre pointe sur le module.

Il me semble que le code pourrait être simplifié mais avant il faut que cela fonctionne d'abord afin d'avoir le résultat attendu

A la base le bouton orange fonctionnait parfaitement.
Mais depuis quelques modifs, il ne fonctionne plus. J'ai donc essayé en créant le nouveau module mais cela ne fonctionne pas.
L'idée est d'avoir un bouton qui permet d'activer les calculs pour générer le graphique top 5 ainsi que la répartition par usage

Oui c'est normal car votre bouton orange s'appelle CommandButton1_Click() et non Bouton2_cliquer_click
Pour celui dans le module, il vous suffit d'enlever le mot Private et de réassocier le bouton à la macro

Je regarde un peu votre code et je vois que vous pouvez déjà simplifier ceci au début:

1. entre la mention 'On remet les compteurs (du tableau des Usages..., et 'Première boucle For qui permet, vous pouvez remplacer par ceci

    With Worksheets("Graphiques et Analyse")
        .Range(.Cells(56, 3), .Cells(63, 3)) = 0
    End With

2. plus bas entre la mention 'On rassemble les déchets par usage' et l'instruction NEXT, à la place de tous les IF ,ElseIf...., mettez ceci

With Worksheets("Graphiques et Analyse")

    Select Case Worksheets("Entrée des données").Cells(i, 7)
        Case Is = 7: .Cells(56, 3) = .Cells(56, 3) + Worksheets("Entrée des données").Cells(i, 4)
        Case Is = 3: .Cells(57, 3) = .Cells(57, 3) + Worksheets("Entrée des données").Cells(i, 4)
        Case Is = 1: .Cells(58, 3) = .Cells(58, 3) + Worksheets("Entrée des données").Cells(i, 4)
        Case Is = 6: .Cells(59, 3) = .Cells(59, 3) + Worksheets("Entrée des données").Cells(i, 4)
        Case Is = 2: .Cells(60, 3) = .Cells(60, 3) + Worksheets("Entrée des données").Cells(i, 4)
        Case Is = 4: .Cells(61, 3) = .Cells(61, 3) + Worksheets("Entrée des données").Cells(i, 4)
        Case Is = 5: .Cells(62, 3) = .Cells(62, 3) + Worksheets("Entrée des données").Cells(i, 4)
        Case Is = 8: .Cells(63, 3) = .Cells(63, 3) + Worksheets("Entrée des données").Cells(i, 4)
    End Select

End With

A voir si je continue ...

Super un grand merci pour l'ensemble des éléments.

Par contre il y a un truc que je dois mal faire. Je ne sais pas pourquoi je n'arrive pas à activer le bouton (page 3) pour qu'il lance la boucle.
Lorsque je passe par la console vba et que j'active, ca marche niquel. Par contre lorsque je suis dans Excel, impossible de cliquer sur le bouton pour que tout s'active.
Il faut que je scroll plus bas et revienne sur le bouton pour qu'il s'active.

Par contre il y a un truc que je dois mal faire. Je ne sais pas pourquoi je n'arrive pas à activer le bouton (page 3) pour qu'il lance la boucle.

Oui mais je pense que vous n'avez pas bien lu ou compris mon message précédent
D'abord, on parle de quel bouton ? Le gris ou l'orange ?

Quel est le nom de la macro et où elle-t-elle placée ? Dans la feuille ou dans un module ?

Rechercher des sujets similaires à "activation macro click"