XL 2016 Excel bugge quand j'essaie d'insérer une ligne

Ben31clp

XLDnaute Nouveau
Bonjour,
Sur deux onglets d'un classeur de compta, Excel bugge à chaque fois que je veux insérer une ligne supplémentaire.
Je n'ai pas de message d'erreur
Je fais insérer il se met à mouliner
Il y a eu dans ce fichiers beaucoup de copié-collé, et il y a des mises en forme de couleur.
J'ai vu qu'il fallait essayer en "effacant tous les formats" , cela a marché provisoirement sur un des onglets mais pas sur l'autre
Merci de votre aide.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Ben, Jcf, Stapple,
un classeur "vérolé" ou qui a trop vécu
Ou qui a "subi" trop de copié collé intempestifs.
cela a marché provisoirement sur un des onglets mais pas sur l'autre
Ca sent le fichier mille fois bidouillé.
Chaque copié/collé colle les valeurs, les formats, les MFC .... et à la fin ça rame.
Sans oublier les MFC déclarées sur des colonnes complètes.
Il faut nettoyer chaque feuille.
Le plus efficace souvent :
Sur chaque feuille, faire Ctrl+Flèche vers le bas ( ce qui pointe la dernière ligne )
Sélectionner la ligne, remonter jusqu'à la dernière ligne utilisée. Faire MAJ et sélectionner cette ligne, ce qui a pour effet de sélectionner toutes les lignes, clic droit et Supprimer.
Ce qui supprime toutes les lignes inutiles y compris leur format MFC ....
Recommencer l'opération avec les colonnes en utilisant Crtl+Flèche droite.
 

Staple1600

XLDnaute Barbatruc
Re

@Ben31clp
1) Ouvre Excel en mode sans échec
• Démarrer/Exécuter -> excel.exe /safe
(ou plus simple: Touche Windows + R )

2) Ouvre ton classeur

Puis fais Enregistrer sous -> Fichier CSV
(pour essayer de récupérer tes données)

Si tu as plusieurs feuilles, il faudra faire un Export CSV pour chaque feuille.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Vieille archive ( qu'on peut optimiser )
Essayez cette macro qui nettoie. Dans certains cas cela fût suffisant.
VB:
Sub Nettoyage()
    Dim Cmax%, Lmax%, L%, C%, DerCol%, DerLig%, F
    ' Zone à analysez, à modifier si necessaire
    Cmax = 5000
    Lmax = 5000
    For Each F In Worksheets
        With Sheets(F.Name)
            DerCol = 0: DerLig = 0
            Application.StatusBar = "Nettoyage de la feuille " & F.Name
            ' Trouver dernière colonne utilisée
            For L = 1 To Lmax
                If .Cells(L, Columns.Count).End(xlToLeft).Column > DerCol Then
                    DerCol = .Cells(L, Columns.Count).End(xlToLeft).Column
                End If
            Next L
            ' Trouver dernière ligne utilisée
            For C = 1 To Cmax
                If .Cells(Rows.Count, C).End(xlUp).Row > DerLig Then
                    DerLig = .Cells(Rows.Count, C).End(xlUp).Row
                End If
            Next C
            ' Suppression lignes et colonnes vides
            .Range(.Cells(1, DerCol + 1), .Cells(1048576, 16384)).Delete Shift:=xlToLeft
            .Rows(DerLig + 1 & ":" & Rows.Count).Delete Shift:=xlUp
        End With
    Next F
    Application.StatusBar = ""
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

@sylvanu
Souvenirs, souvenirs ;)

[avis personnel]
Quand un classeur souffre, je préfère abréger ses souffrances ;)
Puis repartir sur un nouveau classeur
[/avis personnel]
 

Ben31clp

XLDnaute Nouveau
Re,
Vieille archive ( qu'on peut optimiser )
Essayez cette macro qui nettoie. Dans certains cas cela fût suffisant.
VB:
Sub Nettoyage()
    Dim Cmax%, Lmax%, L%, C%, DerCol%, DerLig%, F
    ' Zone à analysez, à modifier si necessaire
    Cmax = 5000
    Lmax = 5000
    For Each F In Worksheets
        With Sheets(F.Name)
            DerCol = 0: DerLig = 0
            Application.StatusBar = "Nettoyage de la feuille " & F.Name
            ' Trouver dernière colonne utilisée
            For L = 1 To Lmax
                If .Cells(L, Columns.Count).End(xlToLeft).Column > DerCol Then
                    DerCol = .Cells(L, Columns.Count).End(xlToLeft).Column
                End If
            Next L
            ' Trouver dernière ligne utilisée
            For C = 1 To Cmax
                If .Cells(Rows.Count, C).End(xlUp).Row > DerLig Then
                    DerLig = .Cells(Rows.Count, C).End(xlUp).Row
                End If
            Next C
            ' Suppression lignes et colonnes vides
            .Range(.Cells(1, DerCol + 1), .Cells(1048576, 16384)).Delete Shift:=xlToLeft
            .Rows(DerLig + 1 & ":" & Rows.Count).Delete Shift:=xlUp
        End With
    Next F
    Application.StatusBar = ""
End Sub
 

Staple1600

XLDnaute Barbatruc
Sylvanu à dit:
Sans parler des utilisateurs qui sont partis d'un fichier existant et qui sont incapables de reconstruire.
Là, ce n'est plus un problème Excel, mais une lutte sans fin contre le principe de Peter ;)

[dans mon univers professionnel]
Si l'utilisateur final n'est pas l'auteur du classeur ou si il n'a pas été formé à son utilisation, je refile la patate chaude à la hiérarchie.
[/dans mon univers professionnel]
PS: Dans mon mien d'univers, c'est un mix de la Loi de Murphy et du principe de Peter qui berce mon quotidien 🙃😩
 

Discussions similaires

Réponses
9
Affichages
180

Statistiques des forums

Discussions
312 239
Messages
2 086 508
Membres
103 236
dernier inscrit
Menni