A voir également:
- [excel vba] affecter formule a une cellule
- Formule excel pour additionner plusieurs cellules - Guide
- Formule excel si et - Guide
- Formule excel moyenne - Guide
- Aller à la ligne dans une cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
2 réponses
la formule ...
...fonctionne presque. Car en fait elle n'ecrit pas directement la valeur dans la cellule mais #?NOM... mais ca ecrit bien la formule dans la barre de saisie pour la cellule active, et ca marche si on la valide comme si on l'avait saisie manuellement.
mais en rapport avec mon problème, je souhaite ne pas passer par Range(macellule).select / activecell.formular1c1 mais directement par MaCellule.FormulaR1C1 ... suivant les conseils qu'on m'a donnés ici.
ActiveCell.FormulaR1C1 = "=somme(1,1)"
...fonctionne presque. Car en fait elle n'ecrit pas directement la valeur dans la cellule mais #?NOM... mais ca ecrit bien la formule dans la barre de saisie pour la cellule active, et ca marche si on la valide comme si on l'avait saisie manuellement.
mais en rapport avec mon problème, je souhaite ne pas passer par Range(macellule).select / activecell.formular1c1 mais directement par MaCellule.FormulaR1C1 ... suivant les conseils qu'on m'a donnés ici.
Même si cela fait un peu de temps... On pourra toujours lire que cela a servi
Voici mon code :
Sub Art()
Dim Svg1, Svg2 As String
Dim MaxC As Long
Dim CellulePrise As Range
Dim Message, Style, Titre
'Selection de la dernière cellule de ta feuille
ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Offset(0, 0).Select
'Ou Affectation de cette cellule dans une variable Range
Set CellulePrise = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Offset(0, 0)
Message = "Nous allons sauvegarder votre dernière cellule"
Style = vbOKOnly
Titre = "Une formule se fait attendre"
MsgBox Message, Style, Titre
'Ta cellule est sûrement prise ... Sauvegarde de Formule dans un String. Cette technique est plus générale que le value
Svg2 = CellulePrise.Formula
'Affectation d'une formule à la cellule-Excel
ActiveCell.FormulaR1C1 = "=CONCATENATE(ROW(),"" ### "",COLUMN())"
'Seconde Sauvegarde de Formule dans un String
Svg1 = CellulePrise.Formula
Message = "Nous allons sauvegarder notre formule. La syntaxe est" & Chr(13) & " Dim Svg1 As String" & Chr(13) & "Dim CellulePrise As Range" & Chr(13) & "Svg1 = CellulePrise.Formula"
Style = vbOKOnly
Titre = "Une valeur se fait attendre"
MsgBox Message, Style, Titre
'Création d'une variable Long définissant le nombre de Colonnes
Range("A1").Select
MaxC = ActiveSheet.UsedRange.Columns.Count
'Affectation de valeur. N.B : MaxC n'est pas une formule !!!
CellulePrise.Value = MaxC
Message = "Le maximum de colonnes est : " & MaxC
Style = vbOKOnly
Titre = "Notre formule n'est plus dans la cellule"
MsgBox Message, Style, Titre
'Restauration de la cellule initiale. Affectation de formule vb à Cellule Excel
CellulePrise.Formula = Svg1
Message = "Le nombre de colonnes et de lignes sont respectivement : " & Svg1
Style = vbOKOnly
Titre = "La sauvegarde a eut lieu sans passer par des select"
MsgBox Message, Style, Titre
'Une seconde fois ...
CellulePrise.Formula = Svg2
Message = "La valeur initiale de la cellule est disponible à nouveau " & Svg2
Style = vbOKOnly
Titre = "La sauvegarde a eut lieu sans passer par des select"
MsgBox Message, Style, Titre
Voici mon code :
Sub Art()
Dim Svg1, Svg2 As String
Dim MaxC As Long
Dim CellulePrise As Range
Dim Message, Style, Titre
'Selection de la dernière cellule de ta feuille
ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Offset(0, 0).Select
'Ou Affectation de cette cellule dans une variable Range
Set CellulePrise = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Offset(0, 0)
Message = "Nous allons sauvegarder votre dernière cellule"
Style = vbOKOnly
Titre = "Une formule se fait attendre"
MsgBox Message, Style, Titre
'Ta cellule est sûrement prise ... Sauvegarde de Formule dans un String. Cette technique est plus générale que le value
Svg2 = CellulePrise.Formula
'Affectation d'une formule à la cellule-Excel
ActiveCell.FormulaR1C1 = "=CONCATENATE(ROW(),"" ### "",COLUMN())"
'Seconde Sauvegarde de Formule dans un String
Svg1 = CellulePrise.Formula
Message = "Nous allons sauvegarder notre formule. La syntaxe est" & Chr(13) & " Dim Svg1 As String" & Chr(13) & "Dim CellulePrise As Range" & Chr(13) & "Svg1 = CellulePrise.Formula"
Style = vbOKOnly
Titre = "Une valeur se fait attendre"
MsgBox Message, Style, Titre
'Création d'une variable Long définissant le nombre de Colonnes
Range("A1").Select
MaxC = ActiveSheet.UsedRange.Columns.Count
'Affectation de valeur. N.B : MaxC n'est pas une formule !!!
CellulePrise.Value = MaxC
Message = "Le maximum de colonnes est : " & MaxC
Style = vbOKOnly
Titre = "Notre formule n'est plus dans la cellule"
MsgBox Message, Style, Titre
'Restauration de la cellule initiale. Affectation de formule vb à Cellule Excel
CellulePrise.Formula = Svg1
Message = "Le nombre de colonnes et de lignes sont respectivement : " & Svg1
Style = vbOKOnly
Titre = "La sauvegarde a eut lieu sans passer par des select"
MsgBox Message, Style, Titre
'Une seconde fois ...
CellulePrise.Formula = Svg2
Message = "La valeur initiale de la cellule est disponible à nouveau " & Svg2
Style = vbOKOnly
Titre = "La sauvegarde a eut lieu sans passer par des select"
MsgBox Message, Style, Titre