• Initiateur de la discussion Initiateur de la discussion obyone
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

obyone

XLDnaute Occasionnel
bonjour,
je viens de terminer ma macro "équilibrage" accessible en cliquant sur le bouton via le userform, mais il me reste 3 petits problèmes:
1 les calculs sont long y-a-t-il possibilité de simplifier mes formules pour accélérer tout cela.
2 j'aimerais conserver le style du tableau de la feuille"CIC" mais lors de la recopie s'est pas toujours le cas y voyez vous une solution( peut etre une copie des ligne mais pas de leur style(je ne sais pas faire))
3 j'aimerais filtrer automatiquement (les masquer) les lignes qui sont marquées "r"
merci d'avance pour vos idées.
laurent
 

Pièces jointes

Re : Filtre en vba

bon j'ai encore avancé un peu
le tri ( masquage des lignes contenant "r" de la feuille"CIC") ne fonctionne pas lorsque je clic sur OK de la feuille "Equilibrage" voici mon vba :

Private Sub CommandButton1_Click()
' copie si l'Equilibrage est OK
Dim Lequ As Long
If Sheets("Equilibrage").Cells(5, 11) = "0" Then
With Sheets("Equilibrage")
For Lequ = 1 To .[a65000].End(xlUp).Row
If .Cells(Lequ, 5) = "p" Then
With Sheets("CIC")
ligne = .[a65000].End(xlUp).Row + 1
Sheets("Equilibrage").Cells(Lequ, 1).Cut .Cells(ligne, 1)
Sheets("Equilibrage").Cells(Lequ, 2).Cut .Cells(ligne, 2)
Sheets("Equilibrage").Cells(Lequ, 3).Cut .Cells(ligne, 3)
Sheets("Equilibrage").Cells(Lequ, 4).Cut .Cells(ligne, 4)
Sheets("Equilibrage").Cells(Lequ, 5).Cut .Cells(ligne, 5)
Sheets("Equilibrage").Cells(Lequ, 6).Cut .Cells(ligne, 6)
Sheets("Equilibrage").Cells(Lequ, 7).Cut .Cells(ligne, 7)
ligne = ligne + 1

End With
ElseIf .Cells(Lequ, 5) = "" Then
With Sheets("CIC")
ligne = .[a65000].End(xlUp).Row + 1
Sheets("Equilibrage").Cells(Lequ, 1).Cut .Cells(ligne, 1)
Sheets("Equilibrage").Cells(Lequ, 2).Cut .Cells(ligne, 2)
Sheets("Equilibrage").Cells(Lequ, 3).Cut .Cells(ligne, 3)
Sheets("Equilibrage").Cells(Lequ, 4).Cut .Cells(ligne, 4)
Sheets("Equilibrage").Cells(Lequ, 5).Cut .Cells(ligne, 5)
Sheets("Equilibrage").Cells(Lequ, 6).Cut .Cells(ligne, 6)
Sheets("Equilibrage").Cells(Lequ, 7).Cut .Cells(ligne, 7)
ligne = ligne + 1
End With
ElseIf .Cells(Lequ, 5) = "r" Then
With Sheets("CIC")
ligne = .[a65000].End(xlUp).Row + 1
Sheets("Equilibrage").Cells(Lequ, 1).Cut .Cells(ligne, 1)
Sheets("Equilibrage").Cells(Lequ, 2).Cut .Cells(ligne, 2)
Sheets("Equilibrage").Cells(Lequ, 3).Cut .Cells(ligne, 3)
Sheets("Equilibrage").Cells(Lequ, 4).Cut .Cells(ligne, 4)
Sheets("Equilibrage").Cells(Lequ, 5).Cut .Cells(ligne, 5)
Sheets("Equilibrage").Cells(Lequ, 6).Cut .Cells(ligne, 6)
Sheets("Equilibrage").Cells(Lequ, 7).Cut .Cells(ligne, 7)
ligne = ligne + 1
End With
End If
Next
End With


With Sheets("CIC")
Application.ScreenUpdating = False
Application.DisplayAlerts = False
.Activate
.[a65000].End(xlUp).Select
'supprime les lignes si la premiere celulle est vide
Do
If IsEmpty(ActiveCell) Then
ActiveCell.EntireRow.Delete
End If
ActiveCell.Offset(-1, 0).Select
Loop Until ActiveCell.Row = 1
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Dim LignR
' masque les lignes avec r
For LignR = Range("A65536").End(xlUp).Row To 5 Step -1
If Cells(LignR, 5) = "r" Then Rows(LignR).Hidden = True
Next

End With
End If
End Sub

pourtant il fonctionne lorsque je clique sur le bouton de la feuille "CIC" dont voici le VBA

Private Sub CommandButton1_Click()
For LignR = Range("A65536").End(xlUp).Row To 5 Step -1
If Cells(LignR, 5) = "r" Then Rows(LignR).Hidden = True
Next
End Sub


la je commence à bien coincer et je n'ai pas de message d'erreur
est ce que quelqu'un peu m'aider?
merci
 

Pièces jointes

Re : Filtre en vba

Salut Obyone,
Tu as un With pour CIC si la page active n'est pas CIC il te faut mettre des points
comme ceci, j'en ai mis 3(de points)
Code:
Dim LignR
' masque les lignes avec r
For LignR =[COLOR="Red"] .[/COLOR]Range("A65536").End(xlUp).Row To 5 Step -1
If[COLOR="red"] .[/COLOR]Cells(LignR, 5) = "r" Then[COLOR="red"] .[/COLOR]Rows(LignR).Hidden = True
Next

Bruno
 
Re : Filtre en vba

re:
Essaye aussi comme ceci
Bruno
Code:
' copie si l'Equilibrage est OK
Dim Lequ As Long
If Cells(5, 11) = "0" Then
With Sheets("CIC")
ligne = .[A65000].End(xlUp).Row + 1
For Lequ = 1 To [A65000].End(xlUp).Row
If .Cells(Lequ, 5) = "p" Or .Cells(Lequ, 5) = "" Or .Cells(Lequ, 5) = "r" Then
Cells(Lequ, 1).Cut .Cells(ligne, 1)
Cells(Lequ, 2).Cut .Cells(ligne, 2)
Cells(Lequ, 3).Cut .Cells(ligne, 3)
Cells(Lequ, 4).Cut .Cells(ligne, 4)
Cells(Lequ, 5).Cut .Cells(ligne, 5)
Cells(Lequ, 6).Cut .Cells(ligne, 6)
Cells(Lequ, 7).Cut .Cells(ligne, 7)
ligne = ligne + 1
End If
Next
For ligne = .[A65000].End(3).Row To 5 Step -1
If .Cells(ligne, 1) = "" Then .Rows(ligne).Delete
Next
' masque les lignes avec r
Feuil5.ListObjects("Tableau14").Range.AutoFilter Field:=5, Criteria1:="<>r"

End With
End If
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

J
Réponses
1
Affichages
2 K
Réponses
2
Affichages
1 K
A
Réponses
37
Affichages
4 K
asso78Lim
A
Y
Réponses
11
Affichages
3 K
Y
E
Réponses
1
Affichages
4 K
P
Réponses
1
Affichages
2 K
PierreJeanPierre
P
J
Réponses
0
Affichages
6 K
juju53
J
Retour