Faire fonctionner une macro sans bouton

Bonjour,

Est il possible de faire fonctionner une macro sans avoir à passer par un bouton de commande. de telle sorte qu'elle fonctionne de façon automatique dès qu'on modifie les données. elle s'applique automatiquement.

Merci pour votre aide.

Bonjour,

Regarde du coté de l'évènement Worksheet.Change

A+

bonjour Frangy.

Peux tu m'expliquer? je n'ai pas bien compris et comme je suis débutante en VBA c'est difficile. Merci :

Où dois je l'insérer, comment ça va fonctionner...

Ne sachant pas exactement ce que tu souhaites faire, je joints un exemple d'utilisation de l'évènement Worksheet.Change.

Dans le module de la feuille "Feuil1", tu vas voir la procédure évènementielle suivante :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count = 1 And Target.Address = "$A$1" Then MsgBox "Coucou !"
End Sub 

Cette procédure sera lancée automatiquement dès lors qu'une modification sera constatée dans la feuille.

Traduction du code : si la modification ne concerne qu'une cellule et si la cellule modifiée (Target=cible) est la cellule A1 alors affiche un message.

612exemple.xlsm (13.24 Ko)

A+

Par exemple, j'ai élaboré le code ci-dessous. mais pour qu'il fonctionne j'ai dû le lier avec un bouton. Or je voudrais que cette macro fonctionne automatiquement à chaque fois que je remplace les cellules contenues dans les colonnes A à G.

Sub EffaceLignesVides()

With Sheets("Imputation")

Dim i As Long

For i = .Range("G65536").End(xlUp).Row To 2 Step -1

If Cells(i, 7) = "" Then .Cells(i, 7).EntireRow.Delete

Next

End With

End Sub

Je te remercie pour ton aide .

Cher Frangy,

Bonjour,

Je suis très intéressé par votre formule de macro sans boutons avec Worsheets_Change et Target cible sur une seule cellule.

Comment affecter la cible à toute la feuille ?

Merci de votre réponse

Je joins votre fichier exemple

Papy Pierrot

220exemple-1v-002.xlsm (15.13 Ko)

@nanouk76

Ton programme supprime les lignes dont la cellule en colonne G est vide.

Si tu souhaites effectuer cette suppression à chaque fois qu’une cellule de la colonne G est effacée, tu peux utiliser ce code

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count = 1 And Target.Column = 7 Then
        If Target.Value = "" Then Target.EntireRow.Delete
    End If
End Sub

A+


@ Cappe Pierre

Comment affecter la cible à toute la feuille ?

Par défaut, l’évènement s’applique à toutes les cellules de la feuille.

Pour reprendre l’exemple précédent et l’appliquer à toute la feuille, il suffit donc de ne pas préciser de cible spécifique.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count = 1 Then MsgBox "Coucou !"
End Sub

A+

Merci à toi frangy. je vais tester cela de suite

Bonjour, Frangy, et à tout le forum

Un grand merci pour votre réponse si rapide.

Bon W.E. à tous et au revoir,

Amicalement,

Papy Pierrot

bonjour Frangy.

Est ce que je dois remplacer totalement le code que j'avais par celui-ci? Car il ne fonctionne pas sur mon fichier

Bonjour,

Tu dois d'abord t'assurer que tu as bien mis le code dans le module de la feuille concernée ("Imputation", je suppose).

A+

Bonjour

Je souhaitais savoir si le code pouvais fonctionner si on remplace le "" par "OPEX". car j'ai essayé mais ça ne fonctionne pas .

Et si du coup cela devient :

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Count = 1 And Target.Column = 16 Then

If Target.Value = "OPEX" Then Target.EntireRow.Delete

End If

End Sub

Merci pour ton aide

Bonjour zazou44,

Si, ta macro fonctionne très bien. Lorsque tu inscris "OPEX" dans une cellule de la colonne P de la feuille concernée par ce code, tu obtiens bien une suppression de la ligne.

59exemple.xlsm (13.56 Ko)

A+

En fait le mot OPEX apparait suite à une rechercheV. je pense que c'est pour cela que ça ne fonctionne pas.

peux tu m'aider? stp

merci

Avec un fichier exemple qui traduit le problème, ça doit pouvoir se faire.

A+

voilà le lien vers le fichier car il ets trop lourd

merci

Effectivement, tu ne détectes pas la modification car l'événement CHANGE ne se produit que lorsque une cellule de la colonne P est modifiée directement par l'utilisateur (ou par un lien externe).

Tu peux t'en sortir en cherchant à détecter la modification qui initie ce changement.

Dans ton cas, il s'agit d'une modification de valeur dans la colonne C de la feuille Outil.

Tu peux écrire qu'en cas de modification d'une valeur dans cette colonne, tu lances une procédure de contrôle dans la feuille SAP,

Si ce n'est pas clair, dis-le moi en retour.

A+

Excuses moi. Je suis encore débutante en Excel. Donc je n'ai pas compris. Si tu peux me donner un exemple se serait bien.

je te remercie


Les données issues de la feuille "Outil" sont aussi importées. donc elles ne sont jamais modifiées...

Tu peux utiliser l'évènement ACTIVATE de la feuille SAP.

Dès l'instant où cette feuille est activée, la procédure SuppOpex (Module1) est lancée et les lignes contenant "OPEX" sont supprimées.

84zazou44-1.xlsm (26.45 Ko)

A+

Super c'est exatement ce qu'il me fallai

Merci encore pour ta rapidité

Rechercher des sujets similaires à "fonctionner macro bouton"