Actualiser toutes les feuilles à l'ouverture du classeur

tigeline001

XLDnaute Occasionnel
Bonjour
J'ai un classeur avec plusieurs feuilles liées et comportant beaucoup de données.
J'ai mis en place un code pour charger des données d'une feuille vers une autre en utilisant la fonction WorkSheet_Active()
et ça marche ,le problème qui se pose est que si j'active mes feuilles sa prend plus de 5 min à se charger.
Es ce qu'il y'a quelqu'un pour m'aider
Merci
 

Modeste

XLDnaute Barbatruc
Re : Actualiser toutes les feuilles à l'ouverture du classeur

Re,
Bonsoir le fil,
Salut René,

Avant de rejeter, tu testeras? Tu peux, à l'ouverture, faire une boucle pour mettre à jour toutes les feuilles, mais regarde déjà si tu gagnes du temps pour une feuille (j'ai "préparé" Sécurité et Construction, pour que tu voies la seule chose qui change)

Attention aux titres, il manquait un accent au mot "prénom". Les titres doivent être copiés dans chaque feuille concernée.
En Rapport_Int, les cellules AA1:AA2 sont la zone de critères. Ne pas les modifier, déplacer, etc sans être certain de ce qu'on fait.

C'est toujours à l'activation d'une feuille que l'actualisation se fait.

Bonne nuit :)
 

Pièces jointes

  • test_chargement (tigeline001).xlsm
    58 KB · Affichages: 25

tigeline001

XLDnaute Occasionnel
Re : Actualiser toutes les feuilles à l'ouverture du classeur

Bonjour Modeste
J'ai un autre problème
le code ci-joint marche très bien ,je demande s'il y a possibilité de le modifier et de l'adapter avec ta methode sur les filtre pour que ca se charge tres rapidement Merci
 

Pièces jointes

  • recup_avec_critere.xlsm
    131.8 KB · Affichages: 32
  • recup_avec_critere.xlsm
    131.8 KB · Affichages: 26

Modeste

XLDnaute Barbatruc
Re : Actualiser toutes les feuilles à l'ouverture du classeur

Bonsoir,

Ça marche bien
si on a plusieurs critère qu'es ce qu'on fait ,ici on a une seule condition basée sur le code

Dans mon premier message (le #5) j'évoquais l'utilisation du Filtre Avancé (que tu retrouves dans le code, puisqu'il y a bien une référence à une méthode AdvancedFilter). Tu aurais donc pu, depuis hier, chercher de l'info à ce sujet: tu aurais vu qu'il suffisait d'ajouter des critères dans la zone du même nom. Le tout étant de savoir ce que tu veux ajouter comme critère? La façon dont tu les ajoutes déterminera s'ils sont liés aux premiers par un ET ou un OU ... mais comme tu n'as pas donné de précision, je ne saurais pas en fournir non plus :p ... ni qui que ce soit sur le forum (à moins de faire de la divination)

Pour ton dernier message, quand je vois le code, il ressemble furieusement à celui dont tu disais qu'il était trop lent ... Pour ne pas nous obliger à "traduire" ton code pour en déduire ce que tu cherches à faire, expose ta demande dans des termes aussi clairs que possible. Précise le lien avec la demande précédente, parce que ça ne saute pas aux yeux.


À ta place, j'aurais tout de même donné suite à la proposition de néné06: l'utilisation de tableaux en mémoire permettrait de gagner en temps d'exécution ... ce qui était ta demande, non?
 

tigeline001

XLDnaute Occasionnel
Re : Actualiser toutes les feuilles à l'ouverture du classeur

Merci Modeste
j'ai essayé d'utiliser un tableau mais il me retourne que le titre
Code:
 Sub test()
Dim MonTab1 As Variant, Compt11 As Long, Plg1 As Range

  With Feuil1    'Déclaration implicite de l'objet feuil1
    lig = 2
    With Feuil4
    .Cells(1, 1) = "Intervention": .Cells(1, 2) = "Conclusion": .Cells(1, 3) = "Code": .Cells(1, 4) = "Genre_Intervention": .Cells(1, 5) = "Statut": .Cells(1, 6) = "Date_début": .Cells(1, 7) = "Date_fin": .Cells(1, 8) = "Code_Inspecteur": .Cells(1, 9) = "Anomalie": .Cells(1, 10) = "Numero_demande": .Cells(1, 11) = "Date_Creation_Demande": .Cells(1, 12) = "Nom_Inspecteur": .Cells(1, 13) = "Prenom_Inspecteur": .Cells(1, 14) = "Domaine_Intervention"
      .Rows(1).Font.Bold = True
      End With
        For i = 2 To .UsedRange.Rows.Count    'traitement de la ligne 2 à la dernière ligne non vide
            Z = .Cells(i, 13) & Chr(32) & .Cells(i, 12)    'dans la variable z j'écris le nom et prénom séparé par un espace
           Set trouve = Feuil2.Columns(3).Find(Z, lookat:=xlWhole)    'j'indique de rechercher la valeur de z dans la colonne 2
            If Not trouve Is Nothing Then    'si un résultat est trouvé
         For Compt11 = LBound(MonTab1, 1) To UBound(MonTab1, 1)
             MonTab1(Compt11, 4) = MonTab1(Compt11, 4) ' colonne 4
             MonTab1(Compt11, 5) = MonTab1(Compt11, 5) 'colonne 5
             MonTab1(Compt11, 14) = MonTab1(Compt11, 14) ' colonne 14
             
        Next Compt11
        End If
        Next i
 Plg1.Value = MonTab1
End With
     
    
End Sub
 

Modeste

XLDnaute Barbatruc
Re : Actualiser toutes les feuilles à l'ouverture du classeur

Modeste pour moi les titres on peut toujours les modifier

Quel rapport avec 'la choucroute"? :eek:

Au risque de passer pour un vieil em... on ne peut pas travailler comme tu le fais:
  • Tu ne lis pas les réponses qui te sont faites. Tu n'en retiens que les bribes qui t'intéressent (en forçant un peu au passage, si elles ne te conviennent pas tout à fait)
  • Tu agis de même avec les codes qui te sont proposés ici ou ailleurs: tu reprends des extraits que tu colles dans des bouts de code à toi, sans prendre le temps de chercher à comprendre
  • Depuis quelques heures, on parle des filtres avancés, mais je ne crois pas une seconde que tu te sois renseigné à ce sujet


Bref, je dois être de mauvaise composition et tu es certainement tombé sur le mauvais cheval, mais je ne reprendrai cette discussion que si tu fais un de ces jours la preuve d'un vrai travail de recherche et de réflexion. Je suis tout disposé à épauler quelqu'un qui a des difficultés, mais ça ne peut pas être à sens unique!

Bonne continuation,
(j'ajouterais bien "sans rancune", mais je sens que je vais me faire incendier, de toute manière)
 

tigeline001

XLDnaute Occasionnel
Re : Actualiser toutes les feuilles à l'ouverture du classeur

Salut Modeste
C'est pas ce que tu penses ,je fais des recherches mais comme je suis débutant en vba les erreurs ne peuvent pas manquer.
je tai parlé des titres à modifier parceque tu m'a demandé de se referer à la discussion #5
Merci
 
Dernière modification par un modérateur:

tigeline001

XLDnaute Occasionnel
Re : Actualiser toutes les feuilles à l'ouverture du classeur

Bonjour
J'ai utilisé un tableau et ça fonctionne
Merci
Code:
Private Sub Worksheet_Activate()
Dim MonTab1 As Variant, Compt11 As Long, Plg1 As Range, Plg2 As Range
Dim j As Long

With Feuil1
.Range("A1:N1").Copy Feuil4.Range("A1")
    Set Plg1 = .Range("A2:N" & .Range("A" & .Rows.Count).End(xlUp).Row)
     MonTab1 = Plg1.Value
     j = 2
         For Compt11 = LBound(MonTab1, 1) To UBound(MonTab1, 1)
        Z = .Cells(Compt11, 13) & Chr(32) & .Cells(Compt11, 12)
         'Z = MonTab1(Compt11, 13) & Chr(32) & MonTab1(Compt11, 12)
         Set trouve = Feuil2.Columns(4).Find(Z, lookat:=xlWhole)
         If Not trouve Is Nothing Then
             MonTab1 = Feuil1.Range("A" & Compt11 & ":N" & Compt11)
             With Feuil4
    Set Plg2 = .Range("A" & j & ":N" & j)
        'Set Plg2 = .Range("A1:N1")
    Plg2.Value = MonTab1

    End With
             j = j + 1
            End If
        Next Compt11
 End With


    
End Sub
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 196
Messages
2 086 099
Membres
103 116
dernier inscrit
kutobi87