Problème Exécution macro

Bonjour à tous,

lorsque j'exécute la macro, apparait un un tableau macros, nom de la macro, mais aucune macro disponible!

dans mon fichier, je cherche a exécuter en automatique que si je modifie les données de la case AW4 onglet DECLAR, la case AW3 change le texte en reprenant dans l'ordre onglet EQUIV, colonne K a partir de K3.

Merci pour votre aide

6classeur1.xlsm (28.39 Ko)

Bonjour,

Les évènements de feuilles ne sont pas à mettre dans un module mais dans la feuille elle même

https://www.excel-pratique.com/fr/vba/evenements_classeur

Déplacez votre code du module 2 dans la feuille DECLAR

Bon dimanche

Bonjour BrunoM45,

je vous remercie pour votre aide et pour le lien.

Bon dimanche a vous aussi.

Bonjour,

je ne comprend pas ce qui se passe, ma macro ne fonctionne pas!

merci pour votre aide

6test-1.xlsm (33.87 Ko)

Re,

Franchement, vous vous moquez de moi c'est ça

Codes initial donné dans "classeur1"

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim declarSheet As Worksheet
    Dim equivSheet As Worksheet
    Dim declarCell As Range
    Dim equivRange As Range
    Dim lastRow As Long
    Dim i As Long

    ' Définir les feuilles de calcul
    Set declarSheet = ThisWorkbook.Sheets("DECLAR")
    Set equivSheet = ThisWorkbook.Sheets("EQUIV")

    ' Vérifier si la modification a été effectuée dans la cellule AW4 de DECLAR
    Set declarCell = declarSheet.Range("AW4")
    If Not Intersect(Target, declarCell) Is Nothing Then
        ' Effacer le contenu de la cellule AW3
        declarSheet.Range("AW3").ClearContents

        ' Trouver la dernière ligne avec des données dans la colonne K d'EQUIV
        lastRow = equivSheet.Cells(equivSheet.Rows.Count, "K").End(xlUp).Row

        ' Définir la plage des cellules de la colonne K à partir de la cellule K3
        Set equivRange = equivSheet.Range("K3:K" & lastRow)

        ' Remplir la cellule AW3 avec les valeurs de la colonne K d'EQUIV
        For i = 1 To equivRange.Rows.Count
            declarSheet.Range("AW3").Offset(i - 1, 0).Value = equivRange.Cells(i, 1).Value
        Next i
    End If
End Sub

Code donnés dans test

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim wsDeclar As Worksheet
    Dim wsEquiv As Worksheet
    Dim declarValue As Variant ' Utiliser Variant au lieu de Double
    Dim equivColumn As Variant ' Utiliser Variant au lieu de Integer

    ' Définir les feuilles de calcul
    Set wsDeclar = Sheets("DECLAR")
    Set wsEquiv = Sheets("EQUIV")

    ' Vérifier si la modification a été effectuée dans la cellule AW4 de l'onglet DECLAR
    If Target.Address = "$AW$4" Then
        ' Récupérer la valeur modifiée dans AW4
        declarValue = Target.Value

        ' Vérifier si la valeur est numérique
        If IsNumeric(declarValue) Then
            ' Trouver la correspondance dans la colonne K de l'onglet EQUIV à partir de la cellule K3
            equivColumn = Application.Match(declarValue, wsEquiv.Range("K3:K" & wsEquiv.Cells(wsEquiv.Rows.Count, "K").End(xlUp).Row), 0)

            ' Vérifier si une correspondance a été trouvée
            If Not IsError(equivColumn) Then
                ' Mettre à jour la cellule AW3 dans l'onglet DECLAR avec la valeur correspondante de la colonne K dans l'onglet EQUIV
                wsDeclar.Range("AW3").Value = wsEquiv.Cells(2, equivColumn + 10).Value ' +10 car la colonne K commence à la colonne 11 (K)
            Else
                ' Si aucune correspondance n'est trouvée, effacer la valeur dans AW3
                wsDeclar.Range("AW3").ClearContents
            End If
        Else
            ' Si la valeur n'est pas numérique, effacer la valeur dans AW3
            wsDeclar.Range("AW3").ClearContents
        End If
    End If
End Sub

Vous n'avez pas l'impression d'avoir changé quelque chose, à part avoir ajouté du code

Bonjour,

j'ai modifié le code, car en exécutant la 1ère macro, le fichier se fermer tous seul? je ne sais plus quoi faire!!

si vous avez une idée?

Re,

Avec un évènement "change" il faut bloquer les évènements lors de la modification,
sinon cela créé une boucle infinie et Excel se ferme (plantage)

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim declarSheet As Worksheet
    Dim equivSheet As Worksheet
    Dim declarCell As Range
    Dim equivRange As Range
    Dim lastRow As Long
    Dim i As Long

    ' Définir les feuilles de calcul
    Set declarSheet = ThisWorkbook.Sheets("DECLAR")
    Set equivSheet = ThisWorkbook.Sheets("EQUIV")

    ' **** IMPORTANT ***
    ' Arrêter les évènements
    Application.EnableEvents = False

    ' Vérifier si la modification a été effectuée dans la cellule AW4 de DECLAR
    Set declarCell = declarSheet.Range("AW4")
    If Not Intersect(Target, declarCell) Is Nothing Then
        ' Effacer le contenu de la cellule AW3
        declarSheet.Range("AW3").ClearContents

        ' Trouver la dernière ligne avec des données dans la colonne K d'EQUIV
        lastRow = equivSheet.Cells(equivSheet.Rows.Count, "K").End(xlUp).Row

        ' Définir la plage des cellules de la colonne K à partir de la cellule K3
        Set equivRange = equivSheet.Range("K3:K" & lastRow)

        ' Remplir la cellule AW3 avec les valeurs de la colonne K d'EQUIV
        For i = 1 To equivRange.Rows.Count
            declarSheet.Range("AW3").Offset(i - 1, 0).Value = equivRange.Cells(i, 1).Value
        Next i
    End If
    ' *** IMPORTANT ***
    ' Réactiver les évènements à la fin
    Application.EnableEvents = True
End Sub

C'est bien indiqué dans le lien de formation donné précédemment

image

A+

Rechercher des sujets similaires à "probleme execution macro"