VBA : lancer une macro si une cellule d'un tableau est modifiée

Jurassix

XLDnaute Nouveau
Bonjour a tous,

J'aurai voulu savoir s'il est possible de lancer une macro dans le cas ou une cellule d'un tableau est modifiée.

J'ai un tableau ou des données sont saisies par des opératrices. A la fermeture du classeur, les données sont exportée vers un autre tableau qui compile l'ensemble des données.
Le tableau de saisie comporte une colonne, avec un "X" si la donnée a été exportée, si bien que si une nouvelle ligne du tableau est saisie, la macro n'exportera que celle ci.
Mais quid si une ligne existante est modifiée? Elle aura un "X", donc ne sera pas exportée/modifiée dans le tableau final.

Merci pour votre aide,

Jurassix.
 

Jurassix

XLDnaute Nouveau
Re : VBA : lancer une macro si une cellule d'un tableau est modifiée

Bon, j'ai pas repris le fichier, mais je me suis aidé de ce que vous avez dit avec l'évènement change. Je sais pas si je m'y prend bien mais bon.

Donc je lance une macro au départ qui me lance la fonction change :

Code:
Private Sub Workbook_Open()
    Dim target As Range
    target = Range("A15:I38")
    Call Worksheet_Change(target)
End Sub

Le Range est la zone à laquelle je souhaites appliquer la fonction uniquement.

Et ma macro change qui, si le changement s'opère sur une ligne dans la colonne K est à 1, la passe à 0.

Code:
Public Sub Worksheet_Change(ByVal target As Range)
    If Range("K" & target.Row).Value = 1 Then
        Range("K" & target.Row).Value = 0
    End If
End Sub

Bon, déjà, ca bloque sur le target = Range("A15:I38") :rolleyes:

Suis pas sur de bien m'y prendre pour le coups.
 

Jurassix

XLDnaute Nouveau
Re : VBA : lancer une macro si une cellule d'un tableau est modifiée

Merci pour votre aide. Est ce qu'il faut bien que je fasse appel à la première sub workbook_open pour lancer Worksheet_Change?

Voilà ce que j'ai :

Code:
Private Sub Workbook_Open()
    Dim Target As Range
    Call Worksheet_Change(Target)
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect([A15:I38], Target) Is Nothing Then
    
        If Range("K" & Target.Row).Value = 1 Then
            Range("K" & Target.Row).Value = 0
        End If

    End If
End Sub

A l'ouverture, j'ai ce message : Erreur d'execution 5, Argument ou appel de procedure incorrect.

J'ai cette ligne
Code:
If Not Intersect([A15:I38], Target) Is Nothing Then
de surlignée

Est ce que celà vient du "target" qui n'est pas défini lors de l'appel de la fonction?
 

tototiti2008

XLDnaute Barbatruc
Re : VBA : lancer une macro si une cellule d'un tableau est modifiée

Bonjour à tous,

Non, tu n'as pas besoin de déclarer Target dans Workbook_Open
Supprime carrément Workbook_Open et adapte Worksheet_change comme ça :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect([A15:I38], Target) Is Nothing Then
    
        If Range("K" & Target.Row).Value = 1 Then
application.Enableevents = false
            Range("K" & Target.Row).Value = 0
application.enableevents = true
        End If

    End If
End Sub
 

Jurassix

XLDnaute Nouveau
Re : VBA : lancer une macro si une cellule d'un tableau est modifiée

Fantastique, ça marche!

Pouvez vous m'expliquer le "application.Enableevents = false"?

Merci,

@Jean-Marcel : je pense savoir pourquoi votre solution ne marchait pas... alors qu'elle marche. J'avais collé votre réponse dans "ThisWorkbook", et non dans la feuille.
 

NoadKoKo

XLDnaute Nouveau
Re : VBA : lancer une macro si une cellule d'un tableau est modifiée

Bonjour à tous,
Je suis étudiant, actuellement en stage à la Société Générale, et j'aurais une question concernant le lancement d'une macro à partir de la modification d'une cellule sur excel 2007 (je tiens à préciser que je connais encore assez mal le language VBA...)
Voila mon problème :
J'ai un document excel dans lequel se trouve une base de données ainsi qu'un rapport sur une autre page du même doc.
Dans ce rapport doivent figurer un tas d'informations sur des applications, toutes recensées dans ma base de données. En haut à gauche de ce rapport, j'ai réussi à faire une macro qui permet, lorsqu'on écrit le nom d'une application recensées dans la base de données et qu'on clique sur un bouton, toutes données la concernant s'affiche aux bons endroit du rapport.
Mais, mon patron, qui en veut toujours plus, me demande de pouvoir modifier des info directement sur le rapport et que ces infos modifiées se modifient également sur la base de données. Et c'est la que je bloque... J'espère que ces explications vous éclairerons pour trouver une solution adéquate à mon pb.
Merci d'avance du temps que vous prendrez pour me répondre :)
Cordialement
NoadKoKo
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof