XL 2016 3Macro à faire

Martin11

XLDnaute Nouveau
Bonjour à tous,

J'ai beaucoup de choses a vous demander... j'espere que vous allez pouvoir m'aider en tout cas j'ai besoin de vous !! :)

1- j'aimerai creer un bouton (macro 1) pour pouvoir supprimer les lignes dans mon tableau qui sont vide, c'est à dire prenons un exemple:
Dans le tableau "footwear" j'aimerai que la ligne de franck et de Lucas se suppriment.
il faudrait faire ca pour chaque petite partie

2- Ensuite j'aimerai creer un bouton pour chaque petites parties ( footwear, apparel...)soient triees par heure d'arrivee

3- et ensuite un 3eme bouton pour avoir une nouvelle feuille avec la date du jour et le tableau sans les heures et prenoms mais garder tout le reste avec les boutons des macros.

Attention: lorsque une plage horaire est ecrite il y a du gris qui apparait, je ne veux pas le perdre !!!
Merci beaucoup
votre aide va m'etre grandement utile!

Je vous ai mis mon fichier en PJ


Bonne soiree à tous
 

Pièces jointes

  • GAMEPLAN(1).xlsx
    21.8 KB · Affichages: 19

fanfan38

XLDnaute Barbatruc
Bonjour
1 seul post par question SVP... Merci... (vous supprimerai le 2ème...)
Rien n'est fait par hasard... J'ai changé la mfc (sinon le tri ne marche pas)
Les lignes vides sont masquées et non supprimées...
Evitez les cellules fusionnées... préférez l'alignement centré sur plusieurs colonnes...

J'espère avoir répondu à votre problème.
A+ François
 

Pièces jointes

  • GAMEPLAN(1).xlsm
    70.6 KB · Affichages: 3

patricktoulon

XLDnaute Barbatruc
bonjour a tous les deux
pour la suppression de ligne
il y avait un soucis avec tes cellules fusionées pour le test "<>"" de "B" qui n’était pas pris en compte a cause des fusions
j'ai donc ajouté cette condition
ensuite countA visiblement déraille quand il y a rien mais qu'il y a une formule
comme la valeur est sensée etre 1 ou 0 dans les cellules j'ai donc utilisé somme en vba
ca donne
VB:
Sub suppression_des_lignes_vides()
    Dim I&
    With Sheets("f1")
        For I = .Cells(Rows.Count, "B").End(xlUp).Row To 6 Step -1
            If .Cells(I, 2).Value <> "" And .Cells(I, "B").MergeArea.Columns.Count = 1 Then
                If WorksheetFunction.Sum(.Cells(I, "B").Offset(0, 3).Resize(, 56)) = 0 Then .Cells(I, 1).EntireRow.Delete
            End If
        Next
    End With
End Sub

EDIT:
pour filtrer trier tes plages ils te faut d'abords les déterminer
par contre je vois pas comment corriger le bug le debug me donne bon pour chaque plage
VB:
Sub tri()
    Dim plage As Range, I&, Lig&, tabl()
    With Sheets("f1 (2)")
        Lig = 5
        For I = 6 To .Cells(Rows.Count, "B").End(xlUp).Row + 1
            If .Cells(I, "B").MergeArea.Columns.Count > 1 Or I = .Cells(Rows.Count, "B").End(xlUp).Row + 1 Then
                Set plage = Range(.Cells(Lig, "B"), .Cells(I - 1, "B")): I = I + 1: Lig = I
                x = x + 1: ReDim Preserve tabl(1 To x): Set tabl(x) = plage
                  End If

        Next
        For I = 1 To UBound(tabl)
            Debug.Print "fieldkey =" & tabl(I).Cells(1, 2).Address & " = (" & tabl(I).Cells(1, 2).Text & ") --->plage a filtrer par la colonne ""C"" =" & tabl(I).Address
            'ActiveWorkbook.Worksheets("f1 (2)").Sort.SortFields.Clear
            'ActiveWorkbook.Worksheets("f1 (2)").Sort.SortFields.Add Key:=tabl(I).Cells(1, 2)), _
             'SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
            'With ActiveWorkbook.Worksheets("f1 (2)").Sort
            '.SetRange tabl(I)
            '.Header = xlYes
            '.MatchCase = False
            '.Orientation = xlTopToBottom
            '.SortMethod = xlPinYin
            '.Apply
            'End With
        Next
    End With
End Sub
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour Martin11, fanfan38, patricktoulon,

Les cellules fusionnées sont ici très utiles car elles permettent d'utiliser cette macro :
VB:
Sub SupprimerLignes()
Do
    With Columns("D").Find("", , xlValues)
        If .Row >= ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count Then Exit Sub
        .EntireRow.Delete
    End With
Loop
End Sub
A+
 
Dernière édition:

job75

XLDnaute Barbatruc
La macro Trier pour le 2ème problème :
VB:
Sub SupprimerLignes()
Do
    With Columns("D").Find("", , xlValues)
        If .Row >= ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count Then Exit Sub
        .EntireRow.Delete
    End With
Loop
End Sub

Sub Trier()
Dim a As Range
SupprimerLignes
On Error Resume Next 'si aucune SpecialCell
Set a = Columns("D").SpecialCells(xlCellTypeConstants, 1)
For Each a In a.Areas
    a.EntireRow.Sort a, xlAscending, Header:=xlNo
Next
End Sub
 

patricktoulon

XLDnaute Barbatruc
re
non job 75 ton fitre melange les lignes
demo3.gif

regarde le tableau apparel
 

Martin11

XLDnaute Nouveau
Bonsoir à tous, vous m'avez grandement aidé merci beaucoup !!

j'aurais encore quelques questions et surtout encore besoin de votre aide

la VBA supprimer les lignes fonctionne tres bien !! :) mais est ce qu'il est possible de faire une VBA pour revenir avant la suppression des lignes ?
1) Pouvoir supprimer les lignes
2) Pouvoir remettre les lignes pour rajouter une personnes apres une 1ere suppression de lignes

la VBA trier ne fonctionne pas mais je vais me debrouiller autrement grace à l'actualisation de la formule ( merci JOB 75)
et sinon j'ai reussi à faire une VBA " nouveau game plan" pour creer une nouvelle feuille avec le jour, cependant il me copie toujours la dernieres feuille alors que j'aimerai que se soit la feuille F1 qui soit constamment reproduite
( actuellement la feuille F1 est avec des noms et des horaires mais par la suite se sera ma base pour chaque jour donc il y aura uniquement le tableau sans les noms et horaires mais avec les boutons pour les VBA et les formules)

je vous mets en PJ le fichier

merci beaucoup grace à vous j'avance !! :)
 

Pièces jointes

  • GAMEPLAN(2).xlsx
    48.9 KB · Affichages: 1

Discussions similaires

Statistiques des forums

Discussions
312 336
Messages
2 087 389
Membres
103 534
dernier inscrit
Kalamymustapha