Recalcul automatique de la feuille.

Résolu/Fermé
Dany - 5 avril 2016 à 16:22
 Kab213 - 9 avril 2016 à 08:08
Bonjour à tous,
J'ai créé une fonction qui marche correctement et qui renvoie une valeur dans la cellule active, sauf dans le cas où une cellule venait à être changée. La macro fonction ne se recalcule pas automatiquement. Quelqu'un pourrait m'aider pour résoudre mon problème?
Merci à tous.



A voir également:

11 réponses

eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
5 avril 2016 à 16:44
Bonjour,

Il faut que cette cellule qui change apparaisse dans les paramètres passés à la fonction.
eric
0
Kab213 Messages postés 15 Date d'inscription mardi 5 avril 2016 Statut Membre Dernière intervention 2 mai 2016
5 avril 2016 à 17:17
Bjr Eric,
Merci pour ta réactivité.
Je ne peux pas passer la cellule en paramètre car elle est déterminée à l'intérieur de la fonction.
Ma fonction est juste une copie de cellules selon des conditions.
J'espère que mon problème est identifié.
Merci par avance.
Dany.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
5 avril 2016 à 17:33
Tu peux toujours. Même si c'est une grande plage c'est toujours mieux que de la rendre volatile.
et si tu mettais le code et la ligne en erreur ?
0
Kab213 Messages postés 15 Date d'inscription mardi 5 avril 2016 Statut Membre Dernière intervention 2 mai 2016
5 avril 2016 à 18:47
Bsr Eric,
Ci-joint le code que j'ai préparé.
Merci pour ton aide.


Function CopieBL(exemple As Range)

Dim Colonne As Integer
Dim Ligne As Integer
Dim I As Integer
Dim Trouve As Boolean


Application.Calculation = xlCalculationAutomatic
I = 1
Trouve = False

Colonne = ActiveCell.Column
Ligne = (ActiveCell.Row)
Cells(Colonne, Ligne).Select
Set example = Range("B5:AF5")
While (I <= 2) And Trouve = False

' MsgBox "Cellule Active is " & Cells(Ligne, Colonne).Value
' MsgBox "Cellule Active BL " & Cells(I + 1, 2).Value

If Cells(Ligne - 2, Colonne) = Cells(2, I + 1) Then
CopieBL = Cells(5, I + 1)
Trouve = True
Else
End If
I = I + 1
Wend

End Function
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
5 avril 2016 à 19:08
Dis plutôt ce que dois faire ta fonction parce que voir qu'elle dépend d'activecell inquiète un peu sans parler des trucs qui n'ont pas grand sens.
Comme par exemple Cells(Colonne, Ligne).Select ?????
Set example = Range("B5:AF5") qui ne sert pas ???
Avec un fichier et qq exemples de résultats attendus
0
Kab213 Messages postés 15 Date d'inscription mardi 5 avril 2016 Statut Membre Dernière intervention 2 mai 2016
5 avril 2016 à 19:20
Bsr Eric,
Ma fonction copie une valeur d'une cellule non connue à priori sous condition (deux valeurs de cellules égales) vers une nouvelle cellule.
J'ai une série de valeurs réparties par jour. Je dois recopier une partie de ces valeurs vers une autre sélection de cellules qui se présente sous forme de relevé d'heures.
J'espère avoir été clair.
Je peux t'envoyer un exemple.
Merci à toi.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
5 avril 2016 à 19:41
Tu as appelles ça une explication ?
Détaille comment tu calcules la valeur à retourner à partir des paramètres connus, je ne peux pas deviner.
Donc tu explique pas à pas comment on y arrive sur un exemple précis et pas illustré par un fichier vide si possible.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Kab213 Messages postés 15 Date d'inscription mardi 5 avril 2016 Statut Membre Dernière intervention 2 mai 2016
5 avril 2016 à 19:31
Ci joint lien du fichier en question.
https://www.cjoint.com/c/FDfrCSTsDYs
0
Kab213 Messages postés 15 Date d'inscription mardi 5 avril 2016 Statut Membre Dernière intervention 2 mai 2016
5 avril 2016 à 19:50
Bsr Eric,
Le fichier transmis est juste une infime partie de la réalité.
Tout se passe dans le même classeur et même feuille.
Les cellules AS4:AU52 représente le mois reparti par semaine qui commence obligatoirement par le Lundi.
Dans la cellule AS8, je dois rapatrier la valeur de la cellule B5 car AS6= B2, car je ne sais pas quand commence le mois courant, et ainsi de suite.
Merci à toi.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
5 avril 2016 à 22:58
C'est un fichier vide...
0
Kab213 Messages postés 15 Date d'inscription mardi 5 avril 2016 Statut Membre Dernière intervention 2 mai 2016
5 avril 2016 à 23:28
Bsr Eric,
Essaies avec celui-là :
https://www.cjoint.com/c/FDfrCSTsDYs
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
5 avril 2016 à 23:45
C'est un gag ? C'est le même lien.
Pas sérieux tout ça. Si dans le prochain post il n'y a pas tout, explication complète comprise (donc regarde si tu as donné tous les éléments qu'il n'y ait aucune ambiguïté), j'abandonne.
0
Kab213 Messages postés 15 Date d'inscription mardi 5 avril 2016 Statut Membre Dernière intervention 2 mai 2016
6 avril 2016 à 14:22
Bjr Eric,
Avec toutes mes excuses. Ce n'est pas du tout un gag comme tu dis, mais je suis novice et je n'y comprends pas grand chose.
J'ai vérifié le fichier avec le nouveau lien :
https://www.cjoint.com/c/FDgmteGLhBs

Explication:
S1= La sélection A1:AF52 est une zone de saisie par jour pour différents postes
S2= La sélection AN1:AV50 me permet de créer une feuille de pointage basée sur la sélection précédente à savoir S1.
Chaque mois,
1/ Je dois reproduire dans S2 les jours du mois répartis par semaine commençant obligatoirement par un lundi.
2/ A la fin de la saisie dans S1, je dois reproduire les cellules B2:AF2 dans les cases correspondantes au même jour dans la sélection S2
Ex : Si AS5=B2 alors AS7=B5.
Le premier problème : Trouver le premier jour du mois dans la sélection S2, et particulièrement dans AO5:AU5
Recopier la cellule B5 dans la cellule trouvée ci-dessous avec offset +2, dans ce cas AS7 et ainsi de suite.
La saisie peut évoluer en cours de mois et il faut que la grille S2 se mette constamment à jour.
J'espère avoir été suffisamment.
Avec tous mes remerciements.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
Modifié par eriiic le 6/04/2016 à 17:29
Désolé mais je ne capte rien...
Quel est le lien avec la cellule active dont tu parlais et qui a disparu ? De toute façon c'est une très mauvaise idée. Tu ne seras jamais sûr de ce qui est calculé et affiché donc oublie.

Où veux-tu mettre cette fameuse fonction ?
En AO5:AU5 pour y mettre la date ?
En AO6:AU6 pour y mettre les missions de Bl qui seraient en B5:xx5 ?
Ou ailleurs et ça doit retourner quoi précisément en prenant des exemples complets et détaillés.
A quoi sert cette ligne Bl ?
Quand tu parles d'offset c'est en ligne ? en colonne ?
En plus tu parles de S1= La sélection A1:AF52 hors les lignes n'ont pas le même rôle.
Bref, incompréhensible pour moi
0
Kab213 Messages postés 15 Date d'inscription mardi 5 avril 2016 Statut Membre Dernière intervention 2 mai 2016
6 avril 2016 à 18:03
Bsr Eric,
Ce n'est obligatoirement une fonction. Si tu as une autre idée
1/ Les cellules AO5:AU5 doivent recevoir la date
2/Les cellules AO6:AU6 doivent recevoir la valeur de la cellule de la ligne 5 si les dates correspondent. C'est pour cela que j'ai parlé d'Offset Ligne.
3/ La ligne BL est divisée par jour où je dois saisir des valeurs quotidiennes.
J'ai parlé des sélections S1 et S2 juste à titre indicatif.
Peut-on simplement utiliser la fonction RechercheH?
Merci pour ton aide.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
6 avril 2016 à 23:55
Bon, je crois que tu n'as pas encore tout dit, j'ai fait des suppositions...
Tout est faisable par formules, pas besoin de fonction personnalisée.
Pour les dates j'ai mis une MFC gris clair pour celles en dehors du mois que tu les vois. Change la MFC en police couleur blanche si tu préfères le vide.
Pour AO6:AU6 j'ai supposé que Toto = Bl (si c'est ça tu ne facilites pas la compréhension...), et que le nom pouvait varier pour obtenir les lignes 5:62
Je lui ai donc mis une cellule dédiée : AN2 et le recherche en colonne A pour trouver sa ligne
Si ce n'est pas tout à fait ça tu peux t'inspirer des formules pour obtenir exactement ce que tu veux.
AO5:AU6 peuvent se copier coller sur un autre bloc. Y changer $AN$2 si le nom est ailleurs
Fond vert pour te montrer les cellules que j'ai touchées
https://www.cjoint.com/c/FDgvXKddueg
0
Kab213 Messages postés 15 Date d'inscription mardi 5 avril 2016 Statut Membre Dernière intervention 2 mai 2016
7 avril 2016 à 16:35
Bjr Eric,
Merci pour ton aide.
Le nom Toto est celui d'un employé. Il n'intervient pas dans la formule de calcul.
Par contre les lignes A5 et A9 dénommées BL et BL1 sont reportées dans AO2:AW50 comme indiqué dans le fichier joint.
https://www.cjoint.com/c/FDhoDV7B63s
Merci encore.
A+
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
7 avril 2016 à 18:18
Bonjour,

C'est fini les renseignements au compte goutte ? Tu pourrais faire un effort dans les explications...
Tu copies AP5:AP6 dans le bloc suivant et tu adaptes la ligne de AP$5 (2 fois) sur la bonne ligne des dates de ce bloc avant de tirer les formules vers la droite.
Idem pour les autres blocs.
https://www.cjoint.com/c/FDhqrf71qSg
eric
0
Bjr Eric.
Merci pour ton aide précieuse.
Mon probleme est résolu grâce à toi.
J'ai un autre souci. Je mettrais en ligne un autre post.
Bon WE.
A+
Dany.
0
Resolu
0