Affecter des formules en VBA

Pierwak

XLDnaute Occasionnel
Bonjour a tous, j'aimerais savoir si il est possible d'affecter une formule simple type $AA6+$AB6 dans une cellule via VBA. En effet, mes utilisateurs travaillent sur des feuilles protégées, il faudrait donc que cela puisse etre fait via un bouton.
 

GCFRG

XLDnaute Occasionnel
Re : Affecter des formules en VBA

salut pierwak, à adapter à ton cas

Private Sub Workbook_Open()
With Sheets("feuil1")
.Range("ac1").FormulaLocal = "=aa1+ab1"
End With
End Sub

clic droit sur l'onglet de la feuille et visualiser le code, tu colles le code et voilà
ou si tu veux que ce soit exécuter via un bouton, tu le colles dans le code du bouton


@+ GC
 

RENAUDER

Nous a quitté
Repose en paix
Re : Affecter des formules en VBA

Bonjour,

Pour pouvoir mettre à jour des cellules protégées via VBA il faut utiliser ceci
Dans le module ThisWorkbook
Code:
Private Sub Workbook_Open()
    With Worksheets("Feuil1")
        .Protect "laetitia", UserInterfaceOnly:=True
    End With
End Sub
Dans un module standard associé à un bouton
Code:
Sub Formule()
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "=R6C27+R6C28"
End Sub
 

Pierwak

XLDnaute Occasionnel
Re : Affecter des formules en VBA

merci, j'ai adapté a mon cas comme suit
Code:
.Range(.Cells(6, 39), .Cells(L, 39)).Select
Selection.Cut
.Cells(6, 39).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
.Range(.Cells(6, 40), .Cells(L, 40)).FormulaR1C1 = "=RC[3]+RC[8]+RC[9]+RC[10]"
Car je veux en fait enlever la formule de la colonne 39 pour bloquer ses valeurs et mettre une nouvelle formule dans la colonne 40, et ce a chaque click sur un bouton. L'opération de copie valeurs se passe bien mais la formule ne s'affecte pas à mes cellules de la colonne 40. L est défini en début de méthode comme la dernière ligne remplie du fichier. Quelqu'un pourrait m'aider à faire cela ??
 

Pierwak

XLDnaute Occasionnel
Re : Affecter des formules en VBA

Après recherches de fils similaires, j'ai modifié mon code comme suit
Code:
.Range(.Cells(6, 39), .Cells(L, 39)).Select
Selection.Copy
.Cells(6, 39).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
For Each cel In .Range(.Cells(6, 40), .Cells(L, 40))
cel.Formula = "=($AQ6+$AV6+$AW6+$AX6)"
Next cel

Cela fonctionne mais malheureusement la somme est toujours faite avec les chiffres de la ligne 6. Je voudrais que pour la 7 ce soit les mêmes colonnes mais avec les chiffres de la ligne 7. C'est surement tout a fait faisable mais je ne vois pas comment.

merci d'avance a celui qui me donnera la réponse
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 913
Messages
2 093 534
Membres
105 751
dernier inscrit
fred13340