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

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.
 

TooFatBoy

XLDnaute Barbatruc
L'image est toute petite. Apparemment c'est une sorte de puce : un cercle noir.

Ce qui est bizarre c'est que j'ai modifié la macro pour ne garder qu'une seule image, mais bien qu'elle soit affichée, je n'ai pas réussi à la voir sur la feuille...
 

TooFatBoy

XLDnaute Barbatruc
Hier il me fallait patienter 20 ou 30 minutes (à vue de pif), pour la moindre action...

La macro à tout effacé en moins de 5 minutes (avec le même chronomètre), et après il n'y avait plus de ralentissement du classeur.


Bonne journée et bonne fête à tous.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

@TooFatBoy
J'ai résolu mon problème de patience avec cette macro
VB:
Sub test_A()
'Déclarations des variabes
Dim vArr As Variant, Rng As Range
'Mise en mémoire (Array) du contenu du tableau
vArr = ActiveSheet.ListObjects(1).DataBodyRange.Value2
'Recopie sur une feuille provisoire
With Sheets("RECOPIE 1").Range("A7").Resize(UBound(vArr, 1), UBound(vArr, 2))
    .Value = vArr
    'insertion des titres
    .Item(1).Offset(-1).Resize(, 5) = Array("DATE", "LIBELLE", "MODE", "DEBIT", "CREDIT")
    .Columns.AutoFit
End With
'Définition d'un plage de cellules
Set Rng = Sheets("RECOPIE 1").Range("A6").CurrentRegion
'Recréation du tableau sur la feuille provisoire
Sheets("RECOPIE 1").ListObjects.Add(xlSrcRange, Rng, , xlYes).Name = "Tableau_test"
End Sub

@Ben31clp
Mode opératoire pour cette macro
1) Tu insères manuellement une nouvelle feuille dans le classeur que tu nommes RECOPIE 1
Tu copies/colles cette macro dans un module
(voir tuto dans mon précédent message ou voir ici également (tuto de David XLD, webmaster du forum)
2) Tu vas sur la feuille CLASSEUR 1 et tu lances la macro

La recopie est immédiate, il n'y a plus d'images sur cette nouvelle feuille.

Si tu arrives à mener à bien cette 1ère recopie par VBA, je te posterai plus tard une macro un peu plus compliquée qui traite les deux feuilles en même temps.
 

Staple1600

XLDnaute Barbatruc
Re

Comme je viens de tester, je poste
1) Créer avant deux feuilles nommées RECOPIE 1 et RECOPIE 2
VB:
Sub test_B()
Dim vArr, Feuilles, i%, Rng As Range
Feuilles = Array(Array("RECOPIE 1", "CLASSEUR 1"), Array("RECOPIE 2", "CLASSEUR 2"))
For i = LBound(Feuilles) To UBound(Feuilles)
With Sheets(Feuilles(i)(0))
    vArr = Sheets(Feuilles(i)(1)).ListObjects(1).DataBodyRange.Value2
    .Range("A7").Resize(UBound(vArr, 1), UBound(vArr, 2)).Value = vArr
    .Range("A6:E6") = Array("DATE", "LIBELLE", "MODE", "DEBIT", "CREDIT")
    .Columns.AutoFit
    Erase vArr
    Set Rng = .Range("A6").CurrentRegion
    .ListObjects.Add(xlSrcRange, Rng, , xlYes).Name = "Tableau_" & Int(Rnd * 50 + 1)
End With
Next
End Sub
Ensuite il suffit de:
• Supprimer manuellement les feuilles originales (CLASSEUR 1 et CLASSEUR 2)​
• d'appliquer les bons formats dans les colonnes​
• d'insérer les formules dans les tableaux​
(ou au-dessus de ceux-ci)​
• et pour finir de faire Enregister sous et choisir le type d'extentsion *.xlsx
(puisqu'on a plus besoin des macros)​
Sur ce , je me déconnecte car comme @TooFatBoy, jai d'autres activités à faire qui vont occuper mon temps de l'aprés-midi.​
Je repasse en fin d'aprés-midi pour voir si tu as réussi à exploiter les macros de @TooFaboy ou les miennes.​
 

Staple1600

XLDnaute Barbatruc
Re

Pour les curieux
VB:
Sub Sherlock()
WTF 1600
End Sub
Private Sub WTF(numShape)
Dim shp As Shape, shpp As Shape, shpName As String, aDr$, i&
Application.ScreenUpdating = False
Set shp = ActiveSheet.Shapes(numShape)
shp.Height = 50: shp.Width = 50
    Set shpp = shp.Duplicate
    shpp.AlternativeText = shp.TopLeftCell.Address
    shpp.Cut
        With Sheets("test")
        .Paste
        .Shapes(1).Fill.ForeColor.RGB = vbRed
    End With
End Sub
NB: Créer une feuille nommée test et tester en étant sur la feuille CLASSEUR 1

J'ai l'impression qu'en fait, chaque cellule du tableau est recouvert d'une forme automatique comme pour faire une bordure
(Il y a N image qui se nomme Image 10)
Donc déjà sur CLASSEUR 1, cela ferait pourrait faire: 5*2710=13550 formes
 

TooFatBoy

XLDnaute Barbatruc
D'origine l'image fait 0,75 (soit 0,125 largeur de colonne) sur 0,75 (soit 0,5 hauteur de ligne), donc les "puces" que l'ont voit sur ma capture d'écran sont en fait les poignées de ladite image.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

Reste à savoir d'où elles proviennent.

Données issues d'une page Web ? (relevé en ligne)
D'origine l'image fait 0,75 (soit 0,125 largeur de colonne) sur 0,75 (soit 0,5 hauteur de ligne), donc les "puces" que l'ont voit sur ma capture d'écran sont en fait les poignées de ladite image.

(je dis cela puisque le classeur semble dédié à une gestion de compte bancaire)
 

Discussions similaires

Réponses
18
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…