Gestion d'une pension par Excel

Bonsoir Banzai64 , forum

merci de t'intéresser au sujet mais je suis comme toi

J'ai déjà eu ce problème et je l'avais résolu par ..... je ne sais plus

mais je me rappel que ce n'était pas dans l'éditeur vba

c'était dans les macros complémentaires ou options etc.

je viens de voir un mail de Chocoloustic qui me dis que ca bug sur

ReDim Temp(0):    ReDim Signe(0)

dans un module de class

j'ai oublié de dire hier que même sur right(expression) j'ai du mettre vba.right(expression)

merci à tous ceux qui pourraient m'aider

Bonsoir

J'ai téléchargé la version sur le forum et je n'ai pas ce problème

Dans l'image il suffisait de décocher les "Manquants" pour que cela redémarre normalement

Je suis ce fil

Si une solution apparait je suis preneur

Bonne soirée

Bonsoir forum

je vous expose mon problème

en partant de mon userform, je lance une macro qui suivant la date inscrite dans un combobox30,

rempli un tableau sur la feuille Occupation sur deux mois en fonction des dates d'entrée et de sortie de la base de données

mon souci est que cette macro s'exécute sur une période de 35 secondes environ

si quelqu'un a une idée sur une autre façon d'écrire cette macro,je suis preneur

merci beaucoup

With Sheets("Occupation")
    .Activate
    .Range("B4:BK73").Interior.ColorIndex = xlNone
    .Range("A1") = CDate(UserForm1.ComboBox30)
For i = 4 To 73
    For j = 2 To 63
        For Each Cell In Sheets("Bdd").Range("T2:T" & Sheets("Bdd").Range("A65536").End(xlUp).Row)
            If (Sheets("Occupation").Cells(i, 1).Value = Cell.Value And VBA.CDate(Sheets("Occupation").Cells(3, j)) <= VBA.CDate(Cell.Offset(0, -5)) And (Sheets("Occupation").Cells(i, 1).Value = Cell.Value And VBA.CDate(Sheets("Occupation").Cells(3, j)) >= VBA.CDate(Cell.Offset(0, -6)))) Then
                Select Case Cell.Offset(0, -4)
                    Case "Entretien"
                        .Cells(i, j).Interior.ColorIndex = 1
                    Case Else
                        .Cells(i, j).Interior.ColorIndex = 15
                    End Select
                End If
        Next Cell
    Next j
Next i
End With

Bonsoir

A première vue pas facile

Pour tester les éventuelles améliorations, un fichier aurait été souhaitable

Sinon comme tu vas travailler dans une feuille

Le classique "Application.ScreenUdapting = False"

Bonne nuit

Bonjour Forum, Banzai64

merci de ta réponse

en retour le fichier avec la macro

je viens de me dire que peut être en utilisant find au lieu de for each

Bonjour

Après une première étude

Je passe de 21 sec à 4,5 sec

Mais j'espère que les résultats sont bons

Je mets juste la macro

Tu me diras si cela convient ?

Bonne soirée

Edit

Une 2ème version

Avec une approche différente

Sub Bouton1_QuandClic()
Dim T1 As Double
Dim Lg As Integer
Dim J As Integer
Dim Cell As Range
T1 = Timer
  Application.ScreenUpdating = False
  With Sheets("Occupation")
    .Activate
    .Range("B4:BK73").Interior.ColorIndex = xlNone
    For Each Cell In Sheets("Bdd").Range("T2:T" & Sheets("Bdd").Range("A65536").End(xlUp).Row)
      Lg = Columns(1).Find(what:=Cell, LookIn:=xlValues, lookat:=xlWhole).Row
      If Lg > 0 Then
        For J = 2 To 63
          If .Cells(3, J) <= Cell.Offset(0, -5) And .Cells(3, J) >= Cell.Offset(0, -6) Then                 ' Dates comprises
            Select Case Cell.Offset(0, -4)
              Case "Entretien"
                .Cells(Lg, J).Interior.ColorIndex = 3
              Case Else
                .Cells(Lg, J).Interior.ColorIndex = 15
              End Select
          End If
        Next J
      End If
    Next Cell
End With
MsgBox Timer - T1
End Sub

Les tests ne sont pas fait

Bonne soirée

Bonsoir Banzai64

un grand merci Banzai64

je passe de 1mn à 10 secondes

c'est formidable

j' ai compris ou était mon erreur

bien dissocié les équations

si je peux abusé, si je post le fichier en l'état, peux tu me dire ce que tu en pense ?

encore un grand merci

Bonsoir

Bien sur que tu peux poster ton fichier

Je l'avais déjà vu à un niveau intermédiaire et je l'avais trouvé très bien

Bonne soirée

Bonsoir Forum, Banzai64

Record du monde

0,4 secondes

impressionant

un trés trés grand

toutes remarques, commentaires ou suggestions sont le bien venus

il y a encore pas mal de boulot sur la gestion des archives et de la gestion des articles

Rechercher des sujets similaires à "gestion pension"