Mettre 2 macro sur la meme feuille

Hello,

Je souhaite mettre 2 macro sur la meme feuille mais cela ne fonctionne pas.

Pouvez vous m'aider ?

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As Range, Valeur As String, Plage As Range

    If Intersect(Target, Range("$BZ$7:$CD$7")) Is Nothing Then Exit Sub
    Valeur = Range("CE7")
    With [Params1].ListObject.DataBodyRange
        Set Plage = .Find(Valeur)
        If Not Plage Is Nothing Then Range("B17:F21").Value = Worksheets("Données").Range(.Cells(Plage.Row - .Row + 1, 5)).Value
    End With

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As Range, Valeur As String, Plage As Range

    If Intersect(Target, Range("$BZ$10:$CD$10")) Is Nothing Then Exit Sub
    Valeur = Range("CE10")
    With [Params2].ListObject.DataBodyRange
        Set Plage = .Find(Valeur)
        If Not Plage Is Nothing Then Range("BL17:BP21").Value = Worksheets("Données").Range(.Cells(Plage.Row - .Row + 1, 5)).Value
    End With

End Sub

Bonjour,

Essaie ainsi :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Valeur As String, Plage As Range

    If Not Intersect(Target, Me.Range("$BZ$7:$CD$7")) Is Nothing And Target.Count = 1 Then
        Valeur = Me.Range("CE7")
        With [Params1].ListObject.DataBodyRange
            Set Plage = .Find(Valeur)
            If Not Plage Is Nothing Then Me.Range("B17:F21").Value = Worksheets("Données").Range(.Cells(Plage.Row - .Row + 1, 5)).Value
        End With
    End If

    If Not Intersect(Target, Me.Range("$BZ$10:$CD$10")) Is Nothing And Target.Count = 1 Then
        Valeur = Me.Range("CE10")
        With [Params2].ListObject.DataBodyRange
            Set Plage = .Find(Valeur)
            If Not Plage Is Nothing Then Me.Range("BL17:BP21").Value = Worksheets("Données").Range(.Cells(Plage.Row - .Row + 1, 5)).Value
        End With
    End If

End Sub

Hello,

Super ca fonctionne

Un grand merci.

J'ai un autre problème :

La première macro n'afficher les résultats directement. Il faut aller sur un autre onglet pour revenir sur le premier et les résultats sont bien présent.

Par contre, la seconde macro fonctionne parfaitement.

Bizarre non? Une idée?

Re,

J'ai répondu en pensant que ces 2 procédures étaient exécutées à partir de la même feuille.

Si ce n'est pas le cas, il faut voir avec une procédure de type Workbook_SheetChange().

Le nom des feuilles serait alors nécessaire !...

Cdlt.

Non, les deux macro s'execute bien sur la meme feuille.

Le probleme c'est que la premiere, lorsque je l'execute n'affiche pas les resultats. Par contre si je clic sur un autre onglet et que je reviens sur l'onglet affichant les resultars, lses resultant de la macro sont bien afficher.

Je ne comprend pas

Re,

Dans quelles feuilles se trouvent les 2 tableaux ?

Cdlt.

re,

dans la feuille principale ou j'ai mis mes deux procedures

Bonjour,

Peux-tu expliquer ce que tu souhaites faire ?

Worksheets("Données").Range(.Cells(Plage.Row - .Row + 1, 5)).Value

Cdlt.

Bonjour

C'est pénible ces demandeurs qui ouvres 36 fils sur le même sujet parce qu'on ne répond pas pendant la nuit !

C'est lié à https://forum.excel-pratique.com/viewtopic.php?f=2&t=140604&p=863133#p863133

Je viens seulement de voir ce fil et j'ai donc bossé pour rien...

Jean-Eric, s'il te plait, peux-tu vérifier mon fichier car je n'ai aucun problème sur le fichier posté mais subodore une mauvaise transcription dans l'original... Merci

Bonjour,

@78chris,

Pas de souci particulier dans ton fichier...

Cdlt.

Merci Jean-Eric

3fichier-1.xlsm (151.80 Ko)

Bonjour,

Je reviens vers vous car vos solutions fonctionne parfaitement dans vos fichiers.

Par contre, quand je les transpose dans mon fichier, la première macro n'affiche toujours pas les résultat alors la deuxième le fait tres bien (en bleu) :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Valeur As String, Plage As Range

If Not Intersect(Target, Me.Range("$BY$7:$CD$7")) Is Nothing And Target.Count = 1 Then
        Valeur = Me.Range("CE7")
        With [ParamsJ].ListObject.DataBodyRange
            Set Plage = .Find(Valeur)
            If Not Plage Is Nothing Then Me.Range("B17:F21").Value = Worksheets("DATA PREFLOP").Range(.Cells(Plage.Row - .Row + 1, 5)).Value
        End With
    End If

    If Not Intersect(Target, Me.Range("$BY$10:$CD$10")) Is Nothing And Target.Count = 1 Then
        Valeur = Me.Range("CE10")
        With [ParamsJ].ListObject.DataBodyRange
            Set Plage = .Find(Valeur)
            If Not Plage Is Nothing Then Me.Range("BL17:BP21").Value = Worksheets("DATA PREFLOP").Range(.Cells(Plage.Row - .Row + 1, 5)).Value
        End With
    End If

End Sub

Ci-joint le fichier.

Pouvez vous m'aider ?

RE

C'est immédiat sur mon PC

OK.

d'ou peux provenir le probleme alors ?

je suis sur Office 365, dernière version d'office et surface Book

j'ai même enlevé la deuxième macro et laisser que la première et elle ne fonctionne pas non plus.

K'ai remplacer le code de la première pas la deuxième et mofidier les parametre pour etre sur que le probleme ne vient pas d'une erreur dans la macro, et ca ne focntionne toujours pas

En j'ai reduit le nombre de reference au mini pour voir si c'atis un probleme de taile de fichier. Toujours pas.

Cela peux tu venir d'un probleme de mise a jour d'excel ? ou d'un mauvais reglage d'excel dans les options?

RE

Testé sur 2010 et 365

Surface book c'est une tablette, non ?

Peut-être un problème de latence

Si tu testes sur un fichier sans images ni mise en forme ?

Rechercher des sujets similaires à "mettre macro meme feuille"