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 & "'!b2ric
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 Subil 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