IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

macro Worsheet Change


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 93
    Par défaut macro Worsheet Change
    Bonjour
    je désire finir cette macro , mais je bloque car je connais pas trop le langage VB et j'essaie de faire ce que je peux .

    je désire récupérer la valeur de la cellule qui à été changé et définir les cellules qui sont concernés par l’évènement change (dans mon cas c'est de (F11) à (ED11)) car je veux pas que ma fonction soit appelé que pour des changements sur la plage de cellules que je désigne.

    le reste est d'aller chercher les valeurs correspondantes au champs recherché dans une autre feuille afin de les insérer dans la feuille en cour .

    merci d'avance pour votre contribution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Private Sub Worksheet_Change(ByVal Target As Range)
    'désigner un plage d'adresse de cellule concérné par le changement
    MsgBox "La valeur de " & Target.Address & " vient d'être changée"
    'stocker la valeur de l'adresse de la cellule dans une variable
    'stocker le num de colonne changé dans y
    Call Test
    End Sub
     
    Sub Test()
     
    dim FC AS Integer ,DF As Integer ,AM As Integer, PRS As Integer , BATCH As Integer 
    dim Date As Date
    'faire une recherche sur la variable dans la deuxiéme feuille "cables data"
    Cible = c
        On Error Resume Next
        x = Apllication.Match(Cible, ThisWorkbook.Worksheets("PRS data").colomns("A:A"), 0)
    If x = 0 Then
      MsgBox "Valeur" & Cible & "non trouvée."
     Else
     MsgBox "Valeur " & Cible & " trouvée dans la ligne:" & x
    ThisWorkbook.Worsheets("cables data").Cells(x, 5).Value = FC: ActiveSheet.Cells(14, y) = FC
    ThisWorkbook.Worsheets("cables data").Cells(x, 4).Value = DF: ActiveSheet.Cells(16, y) = DF
    ThisWorkbook.Worsheets("cables data").Cells(x, 8).Value = AM: ActiveSheet.Cells(19, y) = AM
    ThisWorkbook.Worsheets("cables data").Cells(x, 11).Value = PRS: ActiveSheet.Cells(34, y) = PRS
    ThisWorkbook.Worsheets("cables data").Cells(x, 12).Value = BATCH: ActiveSheet.Cells(35, y) = BATCH
    ThisWorkbook.Worsheets("cables data").Cells(x, 13).Value = Date: ActiveSheet.Cells(36, y) = Date
     
         End If
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    J'ai un peu modifié ta proc mais tu initialise tes variables (FC, DF, etc...) où ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        Dim FC As Integer, DF As Integer, AM As Integer, PRS As Integer, BATCH As Integer
        Dim LaDate As Date
        Dim X As Long
        Dim Y As Long
        Dim Adr As String
     
        If Not Intersect(Target, [F11:ED11]) Is Nothing Then
     
            On Error Resume Next
            'faire une recherche sur la variable dans la deuxiéme feuille "cables data"
            X = Application.WorksheetFunction.Match(Target.Value, Worksheets("PRS data").Range("A:A"), 0)
            On Error GoTo 0
     
            If X = 0 Then
     
                MsgBox "Valeur " & Target.Value & " non trouvée !"
     
            Else
     
                MsgBox "Valeur " & Target.Value & " trouvée dans la ligne : " & X
     
                Adr = Target.Address '<-- stocker la valeur de l'adresse de la cellule dans une variable <-- pour faire quoi ???
                Y = Target.Column '<-- stocker le num de colonne changé dans y
     
                With Worsheets("cables data")
                    'où sont défini ces valeurs (FC, DF, etc...) ???
                    .Cells(X, 5).Value = FC
                    .Cells(X, 4).Value = DF
                    .Cells(X, 8).Value = AM
                    .Cells(X, 11).Value = PRS
                    .Cells(X, 12).Value = BATCH
                    .Cells(X, 13).Value = LaDate
                End With
     
                With ActiveSheet
                    .Cells(14, Y) = FC
                    .Cells(16, Y) = DF
                    .Cells(19, Y) = AM
                    .Cells(34, Y) = PRS
                    .Cells(35, Y) = BATCH
                    .Cells(36, Y) = LaDate
                End With
     
            End If
     
        End If
     
    End Sub
    Hervé.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 93
    Par défaut
    'où sont défini ces valeurs (FC, DF, etc...) ???
    c'est les valeurs stockés dans les cellules désignés et que je veux faire passer par variable dans en partant de worksheet à activesheet .

    je sais pas si je me trompe de méthode!!

    merci beaucoup de votre collaboration

  4. #4
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Si tu souhaites simplement reporter les données de la feuille "cables data" vers la feuille "PRS data", tu n’as pas besoin d’utiliser des variables intermédiaires.
    Tu peux écrire directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Cells(14, y) = ThisWorkbook.Worsheets("cables data").Cells(x, 5).Value  ‘ FC
    Voici une variante avec la méthode Find
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Private Sub Worksheet_Change(ByVal Target As Range)
        'Vérifier si la cellule concernée par le changement fait partie de la plage F11:ED11
        Set c = Application.Intersect(Target, Range("F11:ED11"))
        If Not c Is Nothing And Target.Count = 1 Then
            MsgBox "La valeur de " & Target.Address & " vient d'être changée"
            Call Test(Target.Value, Target.Column)
        End If
    End Sub
    Sub Test(c, Col)
    Dim Ws As Worksheet
    Dim Val As Range
        Set Ws = Worksheets("PRS data")
        'faire une recherche sur la variable dans la deuxiéme feuille "cables data"
        With Worksheets("cables data")
            Set Val = .Columns(1).Find(c, LookIn:=xlValues)
            If Not Val Is Nothing Then
                MsgBox "Valeur " & Cible & " trouvée dans la ligne : " & Val.Row
                Ws.Cells(14, Col) = .Cells(Val.Row, 5).Value ' FC
                Ws.Cells(16, Col) = .Cells(Val.Row, 4).Value ' DF
                Ws.Cells(19, Col) = .Cells(Val.Row, 8).Value ' AM
                Ws.Cells(34, Col) = .Cells(Val.Row, 11).Value ' PRS
                Ws.Cells(35, Col) = .Cells(Val.Row, 12).Value ' BATCH
                Ws.Cells(36, Col) = .Cells(Val.Row, 13).Value ' Date
            Else
                MsgBox "Valeur " & Cible & " non trouvée."
            End If
        End With
    End Sub
    Cordialement.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 93
    Par défaut
    merci beaucoup pour votre collaboration ; c'est exactement ce que je voulais faire .

    il y a juste une question que je me pose pour enregistrer l’évènement change que la feuille correspondante ,car il me demande de lui affecter une macro !!

    cordialement

  6. #6
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Re,

    La procédure évènementielle Worksheet_Change doit être placée dans le module de la feuille concernée Feuil1 (PRS data).
    Pour la procédure Test, tu peux choisir de la placer également dans le module feuille ou dans un module standard (Modules / Module 1).

    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Aide sur une macro qui change la couleur de police
    Par bruxmu dans le forum VBA Word
    Réponses: 4
    Dernier message: 26/03/2020, 16h36
  2. Réponses: 1
    Dernier message: 27/03/2013, 17h26
  3. macro qui change de couleur après une alerte
    Par murka62 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 29/07/2011, 00h06
  4. macro edit : change qui ne focntionne pas
    Par sam01 dans le forum z/OS
    Réponses: 5
    Dernier message: 18/03/2011, 11h26
  5. aide worsheet change
    Par hprfr dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 25/09/2009, 02h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo