Probleme sur une formule injecter par VBA

Bonjour à tous je voudrais injecter une formule via vba contenant une variable qui contient le nom de ma feuille, il se peut que le nom de cette feuille ai un espace je n'arrive pas a concaténer ma variable si quelqu'un peut me filer un coup de main je poste ma partie de code :

'a = nom de l'onglet
ActiveCell.Formula = "='" & a & "'!b2"

Bonjour,

Un essai ...

Dim a As String
a = "Le nom de mon onglet"
ActiveCell.Formula = "='" & a & "'!b2

ric

Bonjour et merci de ton aide, aprés avoir testé

ce la ne fonctionne pas

mon code :

Dim a As String ' on definit la variable
a = ActiveSheet.Name
ActiveCell.Formula = "='" & a & "'!B2"

cela me renvois dans la cellule le chiffre 0

et lorsque je vais sur la cellule, la formule est :

='TEST 11'!B2

TEST 11 est bien le nom de l'onglet crée

merci encore

Bonjour,

Si a = ActiveSheet.Name, il devient inutile d'insérer le nom de l'onglet dans la formule.

ActiveCell.Formula = "=B2" est suffisant.

ric

a est crée avant dans la même macro c'est le nom d un autre onglet

en gros le programme demande un nom d'onglet crée l'onglet et va dessus

(c'est la que je récupère le nom de l'onglet actif dans la variable a

et après je l'utilise pour remplir deux autre feuilles

Bonjour,

Si B2 retourne 0, c'est que la cellule B2 de la feuille concernée est vide ou contient 0.

Sans le code complet, il devient très difficile de comprendre ton souci.

ric

merci encore en tous cas c cool de te pencher dessus

je met tous le code si tu as un peu de temps.

Private Sub btn_ajout_Click()
'Dim a As Worksheet

' on remplit l'onglet crée-----------------------------------------------------------------------------------------------------------------------------------

Dim RE As Worksheet
Set RE = ActiveSheet
    If IsDate(txtDateDebut) Then
    RE.Range("B2").Value = CDate(txtDateDebut)
    Else
     RE.Range("B2").Value = Null
    End If
    RE.Range("J2").Value = cboSite
    RE.Range("A8").Value = cboChefProj
    RE.Range("B3").Value = txtTrav
    'RE.Range("B5").NumberFormat = "0.00"
    txtCout = VBA.Format(txtCout.Value, " 0.00 €")
    RE.Range("B5").Value = txtCout.Value

    RE.Range("A12").Value = txtTache1
    If IsDate(TxtDT1) Then
        RE.Range("B12").Value = CDate(TxtDT1)
    Else
        RE.Range("B12").Value = Null
    End If
    RE.Range("C12").Value = txtJT1

    RE.Range("A13").Value = txtTache2
    If IsDate(TxtDT2) Then
        RE.Range("B13").Value = CDate(TxtDT2)
    Else
        RE.Range("B13").Value = Null
    End If
    RE.Range("C13").Value = txtJT2

    RE.Range("A14").Value = txtTache3
    If IsDate(TxtDT3) Then
        RE.Range("B14").Value = CDate(TxtDT3)
    Else
        RE.Range("B14").Value = Null
    End If
    RE.Range("C14").Value = txtJT3

    RE.Range("A15").Value = txtTache4
    If IsDate(TxtDT4) Then
        RE.Range("B15").Value = CDate(TxtDT4)
    Else
        RE.Range("B15").Value = Null
    End If
    RE.Range("C15").Value = txtJT4

    RE.Range("A16").Value = txtTache5
    If IsDate(TxtDT5) Then
        RE.Range("B16").Value = CDate(TxtDT5)
    Else
        RE.Range("B16").Value = Null
    End If
    RE.Range("C16").Value = txtJT5

' on remplit la feuille 02 Recap-----------------------------------------------------------------------------------------------------------------------------------

Dim RRE As Worksheet
Dim LRE As Integer

Dim a As String ' on definit la variable
Dim b As String ' on definit la variable
a = ActiveSheet.Name
b = cboSite

Sheets("02 Recap").Activate
Range("A1").Select
If Range("A2") = "" Then
    Selection.End(xlDown).Select
    ActiveCell = cboSite.Value
    ActiveSheet.Hyperlinks.Add Anchor:=ActiveCell, Address:="", SubAddress:="'" & a & "'!A1", TextToDisplay:=b

    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = txtTrav

    If IsDate(txtDateDebut) Then
        ActiveCell.Offset(0, 1).Select
        ActiveCell.Value = CDate(txtDateDebut)
    Else
        ActiveCell.Offset(0, 1).Select
        ActiveCell.Value = Null
    End If

    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = cboChefProj

    ActiveCell.Offset(0, 1).Select
    ActiveCell.NumberFormat = "0.00"
    ActiveCell.Value = txtCout.Value
Else
    Selection.End(xlDown).Select
    Selection.Offset(1, 0).Select

    ActiveCell = cboSite.Value
    ActiveSheet.Hyperlinks.Add Anchor:=ActiveCell, Address:="", SubAddress:="'" & a & "'!A1", TextToDisplay:=b

    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = txtTrav

    If IsDate(txtDateDebut) Then
        ActiveCell.Offset(0, 1).Select
        ActiveCell.Value = CDate(txtDateDebut)
    Else
        ActiveCell.Offset(0, 1).Select
        ActiveCell.Value = Null
    End If

    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = cboChefProj

    ActiveCell.Offset(0, 1).Select
    ActiveCell.NumberFormat = "0.00"
    ActiveCell.Value = txtCout.Value
End If
'Set RRE = Worksheets("02 Recap")

'LRE = RRE.Cells(Application.Rows.Count, "A").End(xlUp).Row + 1

 '   RRE.Range("A" & LRE).Value = cboSite
 '   Sheets("02 Recap").Activate
 '   ActiveSheet.Hyperlinks.Add Anchor:=Range("A" & LRE), Address:="", SubAddress:="'" & a & "'!A1", TextToDisplay:=b

  '  RRE.Range("B" & LRE).Value = txtTrav
  '  If IsDate(txtDateDebut) Then
  '      RRE.Range("C" & LRE).Value = CDate(txtDateDebut)
  '  Else
  '      RRE.Range("C" & LRE).Value = Null
  '  End If
  '  RRE.Range("D" & LRE).Value = cboChefProj
  '  RRE.Range("E" & LRE).NumberFormat = "0.00"
  '  RRE.Range("E" & LRE).Value = txtCout.Value

  'a = nom de l'onglet crée

Sheets("03 Prog. Annuelle").Activate
Range("B7").Select

    Selection.End(xlDown).Select
   Selection.Offset(1, 0).Select
    ActiveCell.Formula = "='" & a & "'!J2"
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = lblTravaux

    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = lblCout.Caption

    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = LblDateDebut.Caption

    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = "Date de fin"

    ActiveCell.Offset(1, -4).Select

'Range("A1").Select
'Range("a2").Formula = "=" & a & "!b2"
'Range("A2").NumberFormat = "dd/mm/yy;@"

Unload Me

End Sub

il est pas tout a fait fini il est en phase de test.

Bonjour,

Difficile de tester les codes du UserForm sans le Userform.

Je n'ai pas trop le goût de me taper sa recomposition.

Si ton fichier contient des données confidentielles ...

(sur une copie).

https://www.excel-pratique.com/fr/utilitaires/anonymisation-donnees

Au minimum > envoie le formulaire.

ric

je regarde ça demain un grand merci en tous cas

Bonne soirée

Au final je devais être bien fatigué hier soir avec cette syntaxe

ActiveCell.Formula = "='" & a & "'!B2"

ça fonctionne bien je passe donc le post en résolu et remercie grandement Ric

Rechercher des sujets similaires à "probleme formule injecter vba"