Mon signe "=" fait bugger l'écriture dans une cellule

Bonjour,

je suis tout nouveau en VBA et me voila face à un gros mur. jusqu'ici je récupérais du code à droite et à gauche et j'assemblais mais la je me suis mis à tout rédiger pas à pas pour ce code.

Mon but est lors de la création d'une nouvelle feuille que vienne s'écrire une formule dans une 30aine de lignes d'un tableau.

j'ai réussi à récupérer le bonne colonne, faire écrire dans chaque case la bonne formule mais sans le "=" du début. En concaténant avec des "&" impossible d'écrire ma formule avec des parts variables et des constantes, je dois être assez mauvais. J'ai réussi à détourner une partie de problème en remplaçant mes variables par des symboles dans ma formule et en les réintégrant avec la fonction replace. Mais la ou tout bug c'est lorsque je j'écris tout avec le "=" du début ou que je tente de le remettre avec la fonction replace. tout bug

la formule que je souhaiterais écrire est : =SOMME.SI('NOM DE LA DERNIERE FEUILLE'!$D$2:$D$100;ANUMERODELIGNE;'NOM DE LA DERNIERE FEUILLE'!$C$2:$C$100)

où NOM DE LA DERNIERE FEUILLE et NUMERODELIGNE sont des variables, ca marche bien sans le "=" mais pas avec.

Voici mon code :

Sub identifier_colonne_et_entrer_formule()

Dim col As Integer
Dim lign As Integer
Dim nbligndépenses As Integer
Dim nblignrecettes As Integer
Dim compteur As Integer
Dim derfeuille As String
Dim formule As String

nbligndépenses = Range("Tableau3[Dépenses]").Rows.Count
nblignrecettes = Range("Tableau4[Recettes]").Rows.Count
lign = ActiveCell.Row
derfeuille = Worksheets(Worksheets.Count).Name

Dim x As String
Dim found As Boolean
x = Sheets(Sheets.Count).Range("k5").Value
found = False

Sheets("Recettes Dépenses Catégories").Select

Range("C57").Select

' identifier colonne

Do Until IsEmpty(ActiveCell)
    If ActiveCell.Value = x Then
        found = True
        col = ActiveCell.Column

        Exit Do

    End If
    ActiveCell.Offset(0, 1).Select

Loop

'écrire les formules de dépenses

Cells(3, col).Select

compteur = 0

Do Until compteur = nbligndépenses
lign = ActiveCell.Row

'sous la forme :
ActiveCell.Value = "SOMME.SI('Janvier 2023'!$D$2:$D$100;A%;'Janvier 2023'!$C$2:$C$100)"
ActiveCell = Replace(ActiveCell, "Janvier 2023", derfeuille)
ActiveCell = Replace(ActiveCell, "%", lign)

ActiveCell.Offset(1, 0).Select

compteur = compteur + 1
Loop

End Sub

Merci beaucoup de m'avoir lu.


Bonjour maksou et

Une petite présentation ICI serait la bienvenue

Si vous ne l'avez pas encore fait, je vous invite à lire :
- La charte du forum
- Quelques fonctionnalités du forum à connaître
qui vous aideront dans vos demandes et réponses sur ce forum.

Regardez aussi les petites icônes mises à votre disposition dans la barre de menu qui :
- vous permettent de poster un code (</>)
- ou de clôturer un fil lorsque vous avez terminé (V)

Concernant votre demande, les formules s'écrivent avec la méthode "Formula" ou mieux "FormulaLocal"
Voici le code, non optimisé comme nous n'avons pas le fichier

Sub identifier_colonne_et_entrer_formule()
  Dim Col As Long, Lign As Long
  Dim nbligndépenses As Integer
  Dim nblignrecettes As Integer
  Dim Compteur As Long
  Dim derfeuille As String
  Dim sForm As String

  nbligndépenses = Range("Tableau3[Dépenses]").Rows.Count
  nblignrecettes = Range("Tableau4[Recettes]").Rows.Count
  Lign = ActiveCell.Row
  derfeuille = Worksheets(Worksheets.Count).Name

  Dim x As String
  Dim found As Boolean
  x = Sheets(Sheets.Count).Range("k5").Value
  found = False

  With Sheets("Recettes Dépenses Catégories")
    .Range("C57").Select
    ' identifier colonne
    Do Until IsEmpty(ActiveCell)
      If ActiveCell.Value = x Then
        found = True
        Col = ActiveCell.Column
        Exit Do
      End If
      ActiveCell.Offset(0, 1).Select
    Loop
    ' écrire les formules de dépenses
    Lign = 3: Compteur = 0
    Do Until Compteur = nbligndépenses
      ' Préparer la formule
      sForm = "=SOMME.SI('Janvier 2023'!$D$2:$D$100;A%;'Janvier 2023'!$C$2:$C$100)"
      sForm = Replace(sForm, "Janvier 2023", derfeuille)
      sForm = Replace(sForm, "%", Lign)
      ' Inscrire la formule
      .Cells(Lign, Col).FormulaLocal = sForm
      Compteur = Compteur + 1
    Loop
  End With
End Sub

Merci pour votre participation

Cordialement

WOow super merci,

je vais me plonger sur cette methode "formula"/"formulalocal", merci beaucoup !

apres avoir rajouté les 2/3 petits trucs manquants ca marche super bien !

J'irai faire un tour dans les présentations

Rechercher des sujets similaires à "mon signe fait bugger ecriture"