Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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:

TooFatBoy

XLDnaute Barbatruc
Ou peut-être garder l'excellente macro de #40, mais remplacer
For Ligne = DL To 2 Step -1
If Cells(Ligne, "B") = "" Then Cells(Ligne, "A") = 1
Next Ligne
par une formule avec NB.VAL

Au départ je voulais aussi utiliser un filtre, mais je m'étais dit que ça allait modifier l'ordre de toutes ses lignes.
En voyant la macro de #40, j'ai compris qu'en ça ne déplaçait que les lignes vides, sans modifier l'ordre des autres lignes.
Tu m'as permis d'avancer dans ma réflexion, donc : merci @sylvanu !


Paix et félicité !
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour le fil, le forum

C'est la solution du #post 37 avec une petite modif qui serait le mieux


@Usine à gaz , modifié comme cela peut être ?

Cordialement, @+

VB:
Sub Lgn_vides()
Dim Tab_Range%(), DerniereLigne&
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'ActiveSheet.Unprotect Password:=""
    Sheets("RdV_faits").Select
        DerniereLigne = ActiveSheet.Cells(Rows.Count, "a").End(xlUp)(2).Row
        ReDim Tab_Range(1 To DerniereLigne, 1 To 2)
        For r = 2 To DerniereLigne
            Tab_Range(r, 1) = 1
            If Application.CountA(Rows(r)) = 0 Then Tab_Range(r, 2) = 1
        Next r
        Columns("A:B").Insert shift:=xlToRight
        Range("A1:B" & DerniereLigne).Value2 = Tab_Range
        Range("A1:B1").AutoFilter
        ActiveSheet.Range("$A$1:$B$" & DerniereLigne).AutoFilter Field:=2, Criteria1:="1"
        Range("B3:B" & DerniereLigne + 1).SpecialCells(xlCellTypeVisible).EntireRow.Delete shift:=xlUp
        Columns("A:B").Delete shift:=xlToLeft
        Columns("F:zz").Delete shift:=xlToLeft
        Range("A1").Select
    Sheets("Appels").Select
        DerniereLigne = ActiveSheet.Cells(Rows.Count, "a").End(xlUp)(2).Row
        ReDim Tab_Range(1 To DerniereLigne, 1 To 2)
        For r = 2 To DerniereLigne
            Tab_Range(r, 1) = 1
            If Application.CountA(Rows(r)) = 0 Then Tab_Range(r, 2) = 1
        Next r
        Columns("A:B").Insert shift:=xlToRight
        Range("A1:B" & DerniereLigne).Value2 = Tab_Range
        Range("A1:B1").AutoFilter
        ActiveSheet.Range("$A$1:$B$" & DerniereLigne).AutoFilter Field:=2, Criteria1:="1"
        Range("B3:B" & DerniereLigne).SpecialCells(xlCellTypeVisible).EntireRow.Delete shift:=xlUp
        Columns("A:B").Delete shift:=xlToLeft
        Columns("F:zz").Delete shift:=xlToLeft
        Range("A1").Select
'ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
[a1].Select
End Sub
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Malheureusement, je ne peux pas prendre le risque d'ajouter une colonne dans mon fichier de travail, même si elle est supprimée après traitement. c'est bien la solution du #post 37 qui conviendrait le mieux si elle ne supprimait pas les 1ères lignes
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour Bernard merci pour cet autre code mais ça ne fonctionne pas
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Lionel, vous rendez vous compte que vous trouvez non risqué ( ce qui est vrai ) de supprimer plein de lignes et plein de colonnes, mais extrêmement risqué d'insérer une colonne.
Définitivement, je ne vous comprendrais jamais. Désolé.
Mais au moins, vérifiez, ma macro marche.
 

TooFatBoy

XLDnaute Barbatruc
Lionel, vous rendez vous compte que vous trouvez non risqué ( ce qui est vrai ) de supprimer plein de lignes et plein de colonnes, mais extrêmement risqué d'insérer une colonne.
La colonne en question devrait, à mon avis, être présente en permanence vu que ce n'est pas la première fois, me semble-t-il, qu'il est question de savoir si une ligne du tableau est vide ou non.
 

TooFatBoy

XLDnaute Barbatruc
Re-Marcel : je ne peux pas modifier tous les codes de mon fichier pour ajouter une colonne.
Pas de souci si c'est ton choix.
Remarque : si tu mets la colonne en question après la dernière colonne du tableau, ça ne doit pas te faire changer grand chose dans le code.
Mais, c'est vous qui voyez.


c'est bien la solution du #post 37 qui conviendrait le mieux si elle ne supprimait pas les 1ères lignes
T'es vraiment certain que #37 supprime les premières lignes ???
Pour moi ça supprime le premier groupe de "lignes vides". Mais je peux me tromper bien sûr.
 
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
"T'es vraiment certain que #37 supprime les premières lignes ???"
OUI, il est super ce code de Sylvanu, une petite modif (si possible) suffirait
 

TooFatBoy

XLDnaute Barbatruc
"T'es vraiment certain que #37 supprime les premières lignes ???"
OUI, il est super ce code de Sylvanu, une petite modif (si possible) suffirait
Pourtant ce n'est pas ce qui est décrit dans les commentaires du code :
' On repère la première ligne vide
' On repère la dernière ligne vide
' On supprime
Donc, pour moi ça supprime le premier groupe de "lignes vides".

Si ce code te convient, il te suffit de boucler jusqu'à la fin du tableau, pour que chaque groupe de lignes vides sera supprimé.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…