XL 2019 Données en mèmoire

Bokilo54

XLDnaute Nouveau
Bonjour à tous,

Mon planning étant terminé, je voudrais introduire des données qui restent en mémoire. En effet, si j'inscris par exemple en Janvier pour Machin AAAPPP et que je passe à Février pour inscrire d'autres infos, j'aimerais retrouver mes donnée de Janvier. VBA ou Formule, là est la question ??????
Merci ….
Luc .....
 

Pièces jointes

  • Surveillants Habilités 2020. 2.xlsx
    12.6 KB · Affichages: 9

job75

XLDnaute Barbatruc
Bonjour Bokilo54, chris,

Voyez cette macro dans le code de la feuille "Calendrier" (clic droit sur l'onglet et Visualiser le code) :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [B10:AH24]) Is Nothing Then _
    ThisWorkbook.Names.Add [C3] & "_" & [C2], [B10:AH24].Formula
If Not Intersect(Target, [C2:C3]) Is Nothing Then _
    [B10:AH24] = IIf(IsArray(Evaluate([C3] & "_" & [C2])), Evaluate([C3] & "_" & [C2]), "")
End Sub
Elle permet de mémoriser le tableau B10:AH24 dans un nom défini pour chaque mois/année.

A+
 

Pièces jointes

  • Surveillants Habilités 2020(1).xlsm
    19.9 KB · Affichages: 6

Bokilo54

XLDnaute Nouveau
Bonjour Bokilo54, chris,

Voyez cette macro dans le code de la feuille "Calendrier" (clic droit sur l'onglet et Visualiser le code) :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [B10:AH24]) Is Nothing Then _
    ThisWorkbook.Names.Add [C3] & "_" & [C2], [B10:AH24].Formula
If Not Intersect(Target, [C2:C3]) Is Nothing Then _
    [B10:AH24] = IIf(IsArray(Evaluate([C3] & "_" & [C2])), Evaluate([C3] & "_" & [C2]), "")
End Sub
Elle permet de mémoriser le tableau B10:AH24 dans un nom défini pour chaque mois/année.

A+
Déjà merci …., je vais tester l'affaire et surtout, d'abord essayer de comprendre ...
Un tout grand merci encore
Luc ....
 

Bokilo54

XLDnaute Nouveau
Bonjour Bokilo54, chris,

Voyez cette macro dans le code de la feuille "Calendrier" (clic droit sur l'onglet et Visualiser le code) :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [B10:AH24]) Is Nothing Then _
    ThisWorkbook.Names.Add [C3] & "_" & [C2], [B10:AH24].Formula
If Not Intersect(Target, [C2:C3]) Is Nothing Then _
    [B10:AH24] = IIf(IsArray(Evaluate([C3] & "_" & [C2])), Evaluate([C3] & "_" & [C2]), "")
End Sub
Elle permet de mémoriser le tableau B10:AH24 dans un nom défini pour chaque mois/année.

A+
Je n'ai pas encore tout bien compris, et je dois avouer que j'utilise ton " travail ", car j'ai fait un essai et je n'arrive pas à activer la Macro ......comme je suis un sacré manche en VBA, ma question va te paraitre un peu "stupide " …….
 

Bokilo54

XLDnaute Nouveau
Déjà merci …., je vais tester l'affaire et surtout, d'abord essayer de comprendre ...
Un tout grand merci encore
Luc ....
J'ai besoin de 50 lignes et j'ai cru de manière simpliste et selon ma logique qu'il suffisait de faire passer les cellules sélectionnées pour la Macro de AH24 vers AH50 et naturellement ça ne marche pas ...….aurais-tu la gentillesse de m'expliquer pourquoi ?
Merci …..
Hourra !!!!!! J'ai trouvé, j'ai rien compris mais j'ai trouvé la solution …...
 
Dernière édition:

job75

XLDnaute Barbatruc
Dans ce fichier (2) aller jusqu'à la ligne 50 ne pose pas de problème, utilisez ce code :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
With [B10:AH50]
    If Not Intersect(Target, .Cells) Is Nothing Then _
        ThisWorkbook.Names.Add [C3] & "_" & [C2], .Formula
    If Not Intersect(Target, [C2:C3]) Is Nothing Then _
        .Formula = IIf(IsArray(Evaluate([C3] & "_" & [C2])), Evaluate([C3] & "_" & [C2]), "")
End With
End Sub

Sub LongueurFormule()
MsgBox Len(ThisWorkbook.Names("Janvier_2020").RefersTo) & " caractères"
End Sub
La formule du nom "Janvier_2020" n'a que 5530 caractères, il y a encore de la marge.
 

Pièces jointes

  • Surveillants Habilités 2020(2).xlsm
    24.8 KB · Affichages: 3

Bokilo54

XLDnaute Nouveau
Dans ce fichier (2) aller jusqu'à la ligne 50 ne pose pas de problème, utilisez ce code :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
With [B10:AH50]
    If Not Intersect(Target, .Cells) Is Nothing Then _
        ThisWorkbook.Names.Add [C3] & "_" & [C2], .Formula
    If Not Intersect(Target, [C2:C3]) Is Nothing Then _
        .Formula = IIf(IsArray(Evaluate([C3] & "_" & [C2])), Evaluate([C3] & "_" & [C2]), "")
End With
End Sub

Sub LongueurFormule()
MsgBox Len(ThisWorkbook.Names("Janvier_2020").RefersTo) & " caractères"
End Sub
La formule du nom "Janvier_2020" n'a que 5530 caractères, il y a encore de la marge.
Merci à toi pour ces précieuses recherches que je vais m'atteler à mettre en oeuvre, bien que le problème soit résolu. Mais je vais surtout essayer de comprendre tout cela ....
Excellente journée
Luc.....
 

Discussions similaires

Statistiques des forums

Discussions
314 499
Messages
2 110 247
Membres
110 711
dernier inscrit
chmessi