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 SubJe 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 SubCordialement
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