Optimisation Macro et fichier

Bonsoir,

Afin de gérer le travail de plusieurs collaborateurs, je suis en train de développer un fichier de gestion de travail de groupe.

Je me retrouve face à 2 problèmes.

1] Optimisation d'un macro : Afin de traiter ma BDD dans plusieurs onglet, j'ai crée la macro mentionné ci-dessous. Le soucis est que son exécution prend trop de temps. 8O

2] Si en cours d'année, j'insère une nouvelle ligne dans l'onglet liste, les informations saisies dans les onglet suivant ne correspondent plus au bon dossier > :weird:

Je suis ouvert à tout piste, merci de votre collaboration.

Private Sub Worksheet_Activate()

Feuil4.[C5:C99].ClearContents

With Feuil2

'Reprise des informations de l'onglet LISTE

i = 5

For lig = 5 To .[D65000].End(3).Row

If .Cells(lig, 20) = "X" Then

Feuil4.Cells(i, 3) = .Cells(lig, 3)

Feuil4.Cells(i, 4) = .Cells(lig, 6)

Feuil4.Cells(i, 5) = .Cells(lig, 8): i = i + 1

End If

Next

End With

With Feuil4

'Masquer les lignes vides

For i = 5 To 99 'Numéro des lignes concerné

If Range("C" & i) = "" Then ' je test si la cellule C est vide

Rows(i).Select 'Selectionne la ligne

Selection.EntireRow.Hidden = True

Else

Rows(i).Select 'Selectionne la ligne

Selection.EntireRow.Hidden = False

End If

Next i

End With

End Sub

Bonjour

En premier, modifez lea deuxième partie du code comme ceci :

....
With Feuil3
Dim i as byte
'Masquer les lignes vides
Application.ScreenUpdating = False
For i = 5 To 99  'Numéro des lignes concerné
    If .Range("C" & i) = "" Then ' je test si la cellule C est vide
        .Rows(i).EntireRow.Hidden = True
    Else
       .Rows(i).EntireRow.Hidden = False
        End If
    Next
End With
Application.ScreenUpdating = True
End Sub

Je regarde pour le reste.

Cordialement

Edit :

Essayez le code comme ceci pour la feuille Bulletins

Private Sub Worksheet_Activate()
Dim i As Integer, lig As Integer
Application.ScreenUpdating = False
Feuil3.[C5:C99].ClearContents
With Feuil2
'Reprise des informations de l'onglet LISTE
i = 5
For lig = 5 To .[D65000].End(3).Row
    If .Cells(lig, 19) = "OUI" Then
        Feuil3.Cells(i, 3) = .Cells(lig, 3)
        Feuil3.Cells(i, 4) = .Cells(lig, 6)
        Feuil3.Cells(i, 5) = .Cells(lig, 8): i = i + 1
    End If
Next
End With
With Feuil3
'Masquer les lignes vides
For i = 5 To 99  'Numéro des lignes concerné
    If .Range("C" & i) = "" Then ' je test si la cellule C est vide
        .Rows(i).EntireRow.Hidden = True
    Else
        .Rows(i).EntireRow.Hidden = False
        End If
    Next
End With
Application.ScreenUpdating = True
End Sub

Cordialement

Merci Dan,

Tes modifications sont parfaites, je n'ai plus à attendre que les lignes soient vérifiées les une après les autres.

Reste à trouver une solutions pour l'insertion de ligne dans la feuille "LISTE" sans altérer la saisie des données dans les feuilles suivants ...

Re

Reste à trouver une solutions pour l'insertion de ligne dans la feuille "LISTE" sans altérer la saisie des données dans les feuilles suivants ...

Vous pouvez me donner un exemple que je puisse reproduire ce qui est recherché et à problème ?

Bonsoir Dan,

Tout d'abord merci pour ton aide.

Mon soucis est le suivant si pour X raison, je modifie une variable dans l'onglet "LISTE", la mise à jour s'effectue correctement. Cependant, les données ne correspondent plus.

Exemple via le fichier : GR7-[=0]GR7-Suivi dossier ELEBA3.xlsmSuivi dossier ELEBA3.xlsm.

L'entreprise "LIGNE VARIABLE" n'a pas de salarié donc aucun bulletin. En cours d'année, il y une embauche donc des bulletins à établir.

L'onglet "LISTE" est mis à jour via la colonne gestion sociale.

Cependant, lorsque l'on consulte la feuille BULLETIN, on constate que l'entreprise 'LIGNE SANS DONNÉES" comporte les donnée de l'entreprise "LIGNE BULLETINS SAISIE".

Ce type de traitement est présent sur l'ensemble des feuilles.

C'est un peu casse-tête surtour à 23h16.

Re

Cependant, lorsque l'on consulte la feuille BULLETIN, on constate que l'entreprise 'LIGNE SANS DONNÉES" comporte les donnée de l'entreprise "LIGNE BULLETINS SAISIE".

Vous parlez des données entre colonnes G et Y ??

Si oui, pourquoi supprimez vous toute la colonne C ? Il suffit de rajouter la nouvelle ligne de la feuille Liste dans la feuille bulletin puis de faire un tri pour avoir les dossiers dans l'ordre dans la colonne C de la feuille Bulletins par exemple

Cordialement

Rechercher des sujets similaires à "optimisation macro fichier"