Problème avec une formule insérée via VBA (#NOM? jusqu'à double-cliquer dan

Bonjour à tous,

Je rencontre un problème en insérant une formule dans une cellule Excel via VBA. Voici les détails de mon cas :

  1. Je souhaite insérer une formule de recherche dans une colonne D, basée sur les données de la colonne C qui se calcule automatiquement dés que la cellule C est renseignée.
    Exemple de formule :
    =RECHERCHEV(C2,'F2-Ligne budgétaire'!C:D;2;0).
  2. J'ai écrit un script VBA qui insère cette formule automatiquement lorsque la cellule de la colonne C est modifiée. Voici mon code VBA actuel : Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Range("C3:C1000")) Is Nothing Then
    If Target.Count = 1 Then
    If Not IsEmpty(Target.Value) Then
    Target.Offset(0, 1).FormulaLocal = "=RECHERCHEV(C" & Target.Row & ",'F2 Ligne budgétaire'!C:D;2;0)"
    Else
    Target.Offset(0, 1).ClearContents
    End If
    End If
    End If
  3. End Sub
  4. Le problème :
    • Lorsque le VBA insère la formule, le résultat dans la cellule est #NOM?.
    • Si je double-clique dans la cellule (comme pour modifier manuellement) et que je valide, le résultat devient correct.
    • Même en forçant un recalcul avec Application.Calculate, cela ne corrige pas immédiatement le problème

Questions :

- Comment éviter le problème de recalcul ou de double-clique ?

- Comment remplir la cellule automatiquement sans insérer la formule visible ?

Bonjour,

Votre code modifié:

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Sortie
    Application.EnableEvents = False
    If Not Intersect(Target, Me.Range("C3:C1000")) Is Nothing Then
        If Target.Count = 1 Then
            If Not IsEmpty(Target.Value) Then
                Dim ws As Worksheet
                Dim result As Variant

                ' Référence à la feuille cible
                Set ws = ThisWorkbook.Worksheets("F2 Ligne budgétaire")

                ' Effectuer la recherche
                result = Application.VLookup(Target.Value, ws.Range("C:D"), 2, False)

                ' Insérer le résultat directement
                If Not IsError(result) Then
                    Target.Offset(0, 1).Value = result
                Else
                    Target.Offset(0, 1).Value = "Non trouvé"
                End If
            Else
                Target.Offset(0, 1).ClearContents
            End If
        End If
    End If
Sortie:
    Application.EnableEvents = True
End Sub

Cdlt

bonjour,

tu as une erreur de syntaxe dans ta formule :

si ton séparateur de paramètres dans la formule est ; mets ceci

Target.Offset(0, 1).FormulaLocal = "=RECHERCHEV("& target.address & ";'F2 Ligne budgétaire'!C:D;2;0)"

si ton séparateur de paramètres dans la formule est , mets ceci

Target.Offset(0, 1).FormulaLocal = "=RECHERCHEV("& target.address & ",'F2 Ligne budgétaire'!C:D,2,0)"

mais pas un mélange des deux comme dans ta formule

Target.Offset(0, 1).FormulaLocal = "=RECHERCHEV(C" & Target.Row & ",'F2 Ligne budgétaire'!C:D;2;0)"
Rechercher des sujets similaires à "probleme formule inseree via vba nom double cliquer dan"