Microsoft 365 Macro modification que je ne sais pas faire

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,
Je vous souhaite une beau dimanche :)

Voici ci-dessous un code que j'ai besoin de modifier mais je n'y arrive pas malgré mes tentatives et recherches.
Pourriez-vous m'aider ?

VB:
Sub Lgn_vides()
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
ActiveSheet.Unprotect Password:=""
    Sheets("RdV_faits").Select
        ActiveSheet.Cells(Rows.Count, "a").End(xlUp)(2).Select
        'Rows("107:10015").Select '???
        Selection.Delete Shift:=xlUp
        'Columns("R:ZZ").Select '???' R à dernière col vide
        Selection.Delete Shift:=xlToLeft
    Range("A1").Select
ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
L'objectif est de supprimer les lignes et colonnes vides
Codes que je cherche à modifier :
Supprime toutes les lignes à partir de la 1ère cellule A (cellule active) vide
1er..... Code que je cherche à modifier : "'Rows("107:10015").Select '???" par de la 1ère ligne active à la dernière ligne vide,
Supprime toutes les colonnes à partir de la col "R" jusqu'à la dernière colonne vide

2eme Code que je cherche à modifier : "'Columns("R:ZZ").Select '???' R à dernière col vide

Si vous voulez bien juste modifier mes codes ci-dessus, ça, je pourrai le comprendre :)
Si besoin, je ferai un fichier test.
Un grand Merci ... je continue mes recherches,
Amicalement,
lionel :)
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Tentative de convergence N°2 :
Code:
Sub SupLig()
    Application.ScreenUpdating = False
    DL = Range("A65500").End(xlUp).Row
    ' On créé une colonne en premiere colonne
    Columns("A:A").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    ' Dans cette colonne on met 1 si la ligne est vide
    For Ligne = DL To 2 Step -1
        If Cells(Ligne, "B") = "" Then Cells(Ligne, "A") = 1
    Next Ligne
    ' On tri cette colonne en valeurs décroissantes, donc les lignes vides au début
    Columns("A:B").Select
    ActiveSheet.Sort.SortFields.Clear
    ActiveSheet.Sort.SortFields.Add Key:=Range("A2:A" & DL) _
        , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Feuil5").Sort
        .SetRange Range("A1:B" & DL)
        .Header = xlYes
        .Apply
    End With
    ' On repère le dernier 1 de la colonne A
    DL = Range("A65500").End(xlUp).Row
    ' On supprime les lignes
    Rows("2:" & DL).Delete Shift:=xlUp
    ' On supprime la colonne A créée précédemment
    Columns("A:A").Delete Shift:=xlToLeft
    [A1].Select
End Sub
1654507079484.png
 

Pièces jointes

  • 1654506919315.png
    1654506919315.png
    5.1 KB · Affichages: 9

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Usine à gaz,
Pour les lignes :
VB:
Debut = Range("A1").End(xlDown).Row
Fin = Range("A65500").End(xlUp).Row
Rows(Debut & ":" & Fin).Delete Shift:=xlUp
En supposant que la colonne A est remplie pour trouver début et fin.
Pour les colonnes :
Code:
DC = Cells(1, Columns.Count).End(xlToLeft).Column
Range(Cells(1, 18), Cells(1, DC)).Delete Shift:=xlToLeft
En supposant que les infos à repérer sont sur la ligne 1.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Depuis 2011et 6000 messages , j'ai pensé que vous auriez pu adapter.
Essayez pour voir :
VB:
Sub Lgn_vides()
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
ActiveSheet.Unprotect Password:=""
    Sheets("RdV_faits").Select
        ' Supprime toutes les lignes qui ont quelque chose en colonne A
        Debut = Range("A1").End(xlDown).Row
        Fin = Range("A65500").End(xlUp).Row
        Rows(Debut & ":" & Fin).Delete Shift:=xlUp
        ' Supprime toutes les colonnes qui ont quelque chose en ligne 1 à partir de la colonne R
        DC = Cells(1, Columns.Count).End(xlToLeft).Column
        Range(Cells(1, 18), Cells(1, DC)).Delete Shift:=xlToLeft
    Range("A1").Select
ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
 

ChTi160

XLDnaute Barbatruc
Bonjour le Fil
Pourquoi ne pas juste effacer les données, plutôt que de supprimer les lignes?
Soit :
VB:
Rows(Debut & ":" & Fin).ClearContents
Et
Range(Cells(1, 18), Cells(1, DC)).ClearContents

Bonne fin de journée
Jean marie
 
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour ChTi160 :)

NON Jean-Marie l'objectif est de supprimer les vides
Codes que je cherche à modifier :
Supprime toutes les lignes à partir de la 1ère cellule A vide
1er..... Code que je cherche à modifier : "'Rows("107:10015").Select '???" par de la 1ère ligne active à la dernière ligne vide,
Supprime toutes les colonnes à partir de la col "R" jusqu'à la dernière colonne vide

2eme Code que je cherche à modifier : "'Columns("R:ZZ").Select '???' R à dernière col vide

Comme me le fait remarquer gentiment Sylvanu : "Depuis 2011et 6000 messages , j'ai pensé que vous auriez pu adapter"
Malheureusement, ne parlant pas un mot d'anglais, je resterai juste "NUL" en VBA mais si vous voulez bien juste modifier mes codes ci-dessus, ça, je pourrai le comprendre :)
lionel :)
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Alors expliquez mieux :
R à dernière col vide
La dernière colonne c'est la colonne XFD, moi je supprime toutes les colonnes de R à la dernière colonne qui contient quelque chose en ligne 1.
par de la 1ère ligne active à la dernière ligne vide,
La dernière ligne vide est la ligne 1048576. Moi je supprime toutes les lignes de la première à la dernière qui ont quelque chose en colonne A.
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Alors expliquez mieux :

La dernière colonne c'est la colonne XFD, moi je supprime toutes les colonnes de R à la dernière colonne qui contient quelque chose en ligne 1.

La dernière ligne vide est la ligne 1048576. Moi je supprime toutes les lignes de la première à la dernière qui ont quelque chose en colonne A.
lol ça me semble clair dans le code du #post 1 :
Supprimer les lignes vides
Pour les lignes
1 - ActiveSheet.Cells(Rows.Count, "a").End(xlUp)(2).Select
2 - 'Rows("107:10015").Select '???
3 - Selection.Delete Shift:=xlUp
Pareil pour les colonnes
:)
 

ChTi160

XLDnaute Barbatruc
Re
Je viens de comprendre ça !
"NON Jean-Marie l'objectif est de supprimer les vides"
Qui n'apparaissait pas avant lol
A partir de quelle colonne faut il vérifier les vides ?
Avec un truc du genre à partir de la colonne 1 "A"
VB:
Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Pourquoi ne pas trier la BDD
Jean marie
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 300
Membres
103 173
dernier inscrit
Cerba95