Formules VBA
Fermé
kellyy27
Messages postés
7
Date d'inscription
mardi 9 décembre 2014
Statut
Membre
Dernière intervention
10 février 2015
-
9 déc. 2014 à 23:23
kellyy27 Messages postés 7 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 10 février 2015 - 14 déc. 2014 à 19:21
kellyy27 Messages postés 7 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 10 février 2015 - 14 déc. 2014 à 19:21
A voir également:
- Formules VBA
- Formules excel de base - Guide
- Formules - Télécharger - Études & Formations
- Incompatibilité de type vba ✓ - Forum Programmation
- Vba attendre 1 seconde ✓ - Forum VB / VBA
- Vba dernière colonne non vide ✓ - Forum VB / VBA
7 réponses
via55
Messages postés
14405
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
25 avril 2024
2 703
10 déc. 2014 à 00:22
10 déc. 2014 à 00:22
Bonsoir
Modifies ta macro ainsi :
Cdlmnt
Modifies ta macro ainsi :
Sub Formules() With Worksheets("DONNEES") Dim Ligne As Long Ligne = Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row For n = 2 To Ligne .Range("E" & n).FormulaR1C1 = _ "=IF(AND(RC[-3]=""infirmiére"",RC[-2]=""ZONE A""),IF(OR(RC[-1]=""titulaire"",RC[-1]=""stagiaire"",RC[-1]=""Contractuel CDI""),1,0))" .Range("E" & n).FormulaR1C1 = .Range("E" & n).Value .Range("F" & n).FormulaR1C1 = _ "=IF(AND(RC[-4]=""Agent de Service hospitalier"",RC[-3]=""ZONE A""),IF(OR(RC[-2]=""titulaire"",RC[-2]=""stagiaire"",RC[-2]=""Contractuel CDI""),1))" .Range("F" & n).FormulaR1C1 = .Range("F" & n).Value .Range("G" & n).FormulaR1C1 = _ "=IF(AND(RC[-5]=""Aide-Soignant"",RC[-4]=""ZONE A""),IF(OR(RC[-3]=""titulaire"",RC[-3]=""stagiaire"",RC[-3]=""Contractuel CDI""),1))" .Range("G" & n).FormulaR1C1 = .Range("G" & n).Value Next n End With End Sub
Cdlmnt
kellyy27
Messages postés
7
Date d'inscription
mardi 9 décembre 2014
Statut
Membre
Dernière intervention
10 février 2015
11 déc. 2014 à 10:59
11 déc. 2014 à 10:59
Bonjour
Tous mes remerciements pour ce code que j'ai pu adapter à mes quelques ....2000 formules sur plusieurs procédures.
Le fichier est moins lourd et s'ouvre plus vite.
A chaque fois que je change une donnée, il faut que je ré exécute les macros pour voir apparaitre les changements.
Quel événement je pourrais rajouter dans les macros ou ailleurs pour que les changements apparaissent à temps réels ?
Merci de votre aide
Tous mes remerciements pour ce code que j'ai pu adapter à mes quelques ....2000 formules sur plusieurs procédures.
Le fichier est moins lourd et s'ouvre plus vite.
A chaque fois que je change une donnée, il faut que je ré exécute les macros pour voir apparaitre les changements.
Quel événement je pourrais rajouter dans les macros ou ailleurs pour que les changements apparaissent à temps réels ?
Merci de votre aide
via55
Messages postés
14405
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
25 avril 2024
2 703
11 déc. 2014 à 11:35
11 déc. 2014 à 11:35
Bonjour
Pour l'instant la macro fige les résultats dans les cellules en remplaçant la formule par le résultat justement
Il suffit d'enlever les lignes faisant cela pour ne laisser dans les cellules que les formules, ainsi à chaque changement dans le tableau la modification dans les colonnes avec formules se fera
Donc ta macro sera alors :
Cdlmnt
Pour l'instant la macro fige les résultats dans les cellules en remplaçant la formule par le résultat justement
Il suffit d'enlever les lignes faisant cela pour ne laisser dans les cellules que les formules, ainsi à chaque changement dans le tableau la modification dans les colonnes avec formules se fera
Donc ta macro sera alors :
Sub formules () With Worksheets("DONNEES") Dim Ligne As Long Ligne = Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row For n = 2 To Ligne .Range("E" & n).FormulaR1C1 = _ "=IF(AND(RC[-3]=""infirmiére"",RC[-2]=""ZONE A""),IF(OR(RC[-1]=""titulaire"",RC[-1]=""stagiaire"",RC[-1]=""Contractuel CDI""),1,0))" .Range("F" & n).FormulaR1C1 = _ "=IF(AND(RC[-4]=""Agent de Service hospitalier"",RC[-3]=""ZONE A""),IF(OR(RC[-2]=""titulaire"",RC[-2]=""stagiaire"",RC[-2]=""Contractuel CDI""),1))" .Range("G" & n).FormulaR1C1 = _ "=IF(AND(RC[-5]=""Aide-Soignant"",RC[-4]=""ZONE A""),IF(OR(RC[-3]=""titulaire"",RC[-3]=""stagiaire"",RC[-3]=""Contractuel CDI""),1))" Next n End With End sub
Cdlmnt
kellyy27
Messages postés
7
Date d'inscription
mardi 9 décembre 2014
Statut
Membre
Dernière intervention
10 février 2015
11 déc. 2014 à 12:50
11 déc. 2014 à 12:50
Bonjour Via55
Oui j'avais pensé et à cette astuce et je l'ai même essayé, mais mon fichier redevient comme avant puisque les formules se retrouvent à nouveau dans les cellules. Du coup mon fichier quadruple de taille et ralentit.
Un rafraichissement par macro ? Est ce possible ?
Cordialement
Oui j'avais pensé et à cette astuce et je l'ai même essayé, mais mon fichier redevient comme avant puisque les formules se retrouvent à nouveau dans les cellules. Du coup mon fichier quadruple de taille et ralentit.
Un rafraichissement par macro ? Est ce possible ?
Cordialement
via55
Messages postés
14405
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
25 avril 2024
2 703
11 déc. 2014 à 14:20
11 déc. 2014 à 14:20
Re
A ce moment si tu veux simplement rafraichir la ligne où il y a une modif tu peux dans la worksheet de la feuille concernée mettre une macro de ce type :
Cdlmnt
A ce moment si tu veux simplement rafraichir la ligne où il y a une modif tu peux dans la worksheet de la feuille concernée mettre une macro de ce type :
Private Sub Worksheet_Change(ByVal Target As Range) n=target.row With Worksheets("DONNEES") .Range("E" & n).FormulaR1C1 = _ "=IF(AND(RC[-3]=""infirmiére"",RC[-2]=""ZONE A""),IF(OR(RC[-1]=""titulaire"",RC[-1]=""stagiaire"",RC[-1]=""Contractuel CDI""),1,0))" .Range("E" & n).FormulaR1C1 = .Range("E" & n).Value .Range("F" & n).FormulaR1C1 = _ "=IF(AND(RC[-4]=""Agent de Service hospitalier"",RC[-3]=""ZONE A""),IF(OR(RC[-2]=""titulaire"",RC[-2]=""stagiaire"",RC[-2]=""Contractuel CDI""),1))" .Range("F" & n).FormulaR1C1 = .Range("F" & n).Value .Range("G" & n).FormulaR1C1 = _ "=IF(AND(RC[-5]=""Aide-Soignant"",RC[-4]=""ZONE A""),IF(OR(RC[-3]=""titulaire"",RC[-3]=""stagiaire"",RC[-3]=""Contractuel CDI""),1))" .Range("G" & n).FormulaR1C1 = .Range("G" & n).Value End with End Sub
Cdlmnt
kellyy27
Messages postés
7
Date d'inscription
mardi 9 décembre 2014
Statut
Membre
Dernière intervention
10 février 2015
>
via55
Messages postés
14405
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
25 avril 2024
14 déc. 2014 à 19:21
14 déc. 2014 à 19:21
Bonsoir
Lorsque je prolonge cette macro avec toutes mes formules ( environ 300) j'obtiens l'erreur Procedure trop grande . Et je ne peux pas diviser l'événemnt Worksheet_Change(ByVal Target As Range) sur plusieurs macros.
Comment je pourrais faire pour compiler toutes ces macros en boucle ,?
Cordialement
Lorsque je prolonge cette macro avec toutes mes formules ( environ 300) j'obtiens l'erreur Procedure trop grande . Et je ne peux pas diviser l'événemnt Worksheet_Change(ByVal Target As Range) sur plusieurs macros.
Comment je pourrais faire pour compiler toutes ces macros en boucle ,?
Cordialement
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Gyrus
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
523
11 déc. 2014 à 13:53
11 déc. 2014 à 13:53
Bonjour à tous,
Est-ce qu'un simple TCD ne te donnerait pas le résultat attendu ?
Exemple :
https://www.cjoint.com/?DLloaelFCXf
A+
Est-ce qu'un simple TCD ne te donnerait pas le résultat attendu ?
Exemple :
https://www.cjoint.com/?DLloaelFCXf
A+
kellyy27
Messages postés
7
Date d'inscription
mardi 9 décembre 2014
Statut
Membre
Dernière intervention
10 février 2015
11 déc. 2014 à 14:28
11 déc. 2014 à 14:28
Bonjour Gyrus
Merci de m'aider à trouver une solution
l'idée du tcd est bonne , mais ne m'arrange pas dans mon cas de figure
Du fait
-de l'architecture de mon fichier et des tableaux e bord
- des formules de calculs de périodes et de dates
-...
cordialement
Merci de m'aider à trouver une solution
l'idée du tcd est bonne , mais ne m'arrange pas dans mon cas de figure
Du fait
-de l'architecture de mon fichier et des tableaux e bord
- des formules de calculs de périodes et de dates
-...
cordialement
kellyy27
Messages postés
7
Date d'inscription
mardi 9 décembre 2014
Statut
Membre
Dernière intervention
10 février 2015
13 déc. 2014 à 08:31
13 déc. 2014 à 08:31
Bonjour
j'essaye ce code mais la macro ne s'éxexute pas quand la valeur d'une cellule change
Code placé dans l'évenement worksheets de la feuille données
Bien cordialement
j'essaye ce code mais la macro ne s'éxexute pas quand la valeur d'une cellule change
Code placé dans l'évenement worksheets de la feuille données
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
i = ActiveCell.Row
If Target.Address = Cells(i, 1).Address Then
Call MACRO
End If
End Sub
Bien cordialement
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 214
13 déc. 2014 à 09:39
13 déc. 2014 à 09:39