Appliquer Formule dans toute une colonne
Bonjour,
Je souhaite appliquer une formule dans toute la colonne R et une autre formule dans toute la colonne S depuis la ligne 5 en cliquant sur un bouton. Mon code VBA fonctionne avec la formule de la colonne R mais pas avec celle de la colonne S.
Voici mon code :
Sub AppliquerFormuleColonne()
'Déclarer la constante de la notion de dernière ligne
Dim DerniereLigne As Long
'Déclarer la constante de la notion de formule
Dim FormuleTauxHoraire As String
'Déclarer la constante de la notion de formule
Dim FormuleTauxHoraireMajore As String
'déterminer la dernière ligne avec des données dans la colonne A
DerniereLigne = ThisWorkbook.Worksheets("BD PAYE").Range("A" & Rows.Count).End(xlUp).Row
'Définir la formule pour calculer le taux horaire à appliquer
FormuleTauxHoraire = "=IF(U5="""",0,IF(N5="""",0,U5/N5))"
'Appliquer la formule pour calculer le taux horaire depuis la cellule R5 à la dernière ligne
ThisWorkbook.Worksheets("BD PAYE").Range("R5:R" & DerniereLigne).Formula = FormuleTauxHoraire
'Définir la formule pour calculer le taux horaire majoré à appliquer
FormuleTauxHoraireMajore = "=IF(H5<>"",R5*1,25,"""")"
'Appliquer la formule pour calculer le taux horaire majoré depuis la cellule S5 à la dernière ligne
ThisWorkbook.Worksheets("BD PAYE").Range("S5:S" & DerniereLigne).Formula = FormuleTauxHoraireMajore
End Sub
Pourriez-vous m'aider à debuguer ?
Je vous remercie
Cordialement,
Bonjour
Pourquoi ne pas tout simplement pas utiliser un tableau structuré dont c'est le fonctionnement naturel ?
Bonjour,
Merci pour avoir réfléchi sur mon sujet.
J'ai envisagé la solution du tableau structuré et je l'ai même proposé. Mais c'est un fichier commun avec toutes les entreprises d'un groupe et le groupe ne veut pas changer le formalisme du tableau actuel, je ne peux pas le restructurer avec des tableaux structués. C'est pour cela que j’essaie de faire appel à VBA
parce que cela conserve le formalisme du tableau actuel.
Cordialement,
Bonsoir Elena
voici un code à tester
Sub AppliquerFormuleColonne()
' Déclarer la constante de la notion de dernière ligne
Dim DerniereLigne As Long
' Déclarer la constante de la formule pour le taux horaire
Dim FormuleTauxHoraire As String
' Déclarer la constante de la formule pour le taux horaire majoré
Dim FormuleTauxHoraireMajore As String
' Déterminer la dernière ligne avec des données dans la colonne A
DerniereLigne = ThisWorkbook.Worksheets("BD PAYE").Range("A" & Rows.Count).End(xlUp).Row
' Définir la formule pour calculer le taux horaire à appliquer
FormuleTauxHoraire = "=IF(U5="""";0;IF(N5="""";0;U5/N5))"
' Appliquer la formule pour calculer le taux horaire depuis la cellule R5 à la dernière ligne
ThisWorkbook.Worksheets("BD PAYE").Range("R5:R" & DerniereLigne).Formula = FormuleTauxHoraire
' Définir la formule pour calculer le taux horaire majoré à appliquer
' Correction : utiliser le bon opérateur de comparaison et la bonne syntaxe de formule
FormuleTauxHoraireMajore = "=IF(H5<>""""; R5*1.25; """")"
' Appliquer la formule pour calculer le taux horaire majoré depuis la cellule S5 à la dernière ligne
ThisWorkbook.Worksheets("BD PAYE").Range("S5:S" & DerniereLigne).Formula = FormuleTauxHoraireMajore
End SubBonjour,
Merci pour la proposition de correction :
- Modifier : <>"" en <>"""" et 1,25 en 1.25
ces modifications n'ont pas débeugué la formule mais je me suis rendu compte que j'avais mis des ';' au lieu de ',' car en anglais, les séparateurs sont des ','
Le code suivant a fonctionné :
'Définir la formule pour calculer le taux horaire majoré à appliquer
FormuleTauxHoraireMajore = "=IF(H5<>"""", R5*1.25, """")"
'Appliquer la formule pour calculer le taux horaire majoré depuis la cellule S5 à la dernière ligne
ThisWorkbook.Worksheets("BD PAYE").Range("S5:S" & DerniereLigne).Formula = FormuleTauxHoraireMajoreCordialement,