Macro tourne en boucle

bobjazz

XLDnaute Impliqué
Bonjour le Forum

La macro fonctionne très bien sur excel 2013, sur excel 2010, la macro tourne en boucle, ne s’arrête pas.
Je ne vois pas pourquoi.

Sub Effligne()

Columns("T:T").Select
Selection.Delete Shift:=xlToLeft
Rows("1:1").Select
Range("B1").Activate
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveWindow.ScrollColumn = 1
Range("A1").Select
ActiveCell.FormulaR1C1 = "Numéro"
Range("B1").Select
ActiveCell.FormulaR1C1 = "Nom"
Range("C1").Select
ActiveCell.FormulaR1C1 = "Code"
Range("D1").Select
ActiveCell.FormulaR1C1 = "Type"
Range("E1").Select
ActiveCell.FormulaR1C1 = "Statue"
Range("F1").Select
ActiveCell.FormulaR1C1 = "Janv"
Selection.AutoFill Destination:=Range("F1:Q1"), Type:=xlFillDefault
Range("F1:Q1").Select
Range("R1").Select
ActiveCell.FormulaR1C1 = "Total"
Range("S1").Select
ActiveCell.FormulaR1C1 = "%"
Range("T1").Select
ActiveCell.FormulaR1C1 = "Taux"
Range("A1").Select

Dim z$, i&, k&
k = Cells(3000, 1).Row
For i = k To 2 Step -1
z = Cells(i, 1).Value
If Not (Cells(i, 1) Like ("6*") Or Cells(i, 1) Like ("7*") Or Cells(i, 1) Like ("E*")) Then Rows(i).Delete
Next
ActiveWorkbook.Save

Cells.Select
Cells.EntireColumn.AutoFit
End Sub


Merci d'avance

Bobjazz
 

Papou-net

XLDnaute Barbatruc
Re : Macro tourne en boucle

Bonjour Bobjazz,

Sur ma version 2010, la macro se termine normalement.

Par contre, retiens qu'il est inutile de sélectionner chaque cellule avant d'écrire dedans, ce qui ralentit l'exécution.

Je te propose donc de simplifier ton code comme ci-dessous:

Code:
Sub Effligne()
entete = Array(, "Numéro", "Nom", "Code", "Type", "Statut", "Janv", "Févr", "Mars", "Avril", "Mai", "Jun", "Jui", "Août", "Sept", "Oct", "Nov", "Déc", "Total", "%", "Taux")

Columns("T:T").Delete Shift:=xlToLeft
For c = 1 To 20
  Cells(1, c) = entete(c)
Next

Dim z$, i&, k&
k = Cells(3000, 1).Row
For i = 3000 To 2 Step -1
z = Cells(i, 1).Value
If Not (Cells(i, 1) Like ("6*") Or Cells(i, 1) Like ("7*") Or Cells(i, 1) Like ("E*")) Then Rows(i).Delete
Next
ActiveWorkbook.Save

Cells.EntireColumn.AutoFit
End Sub
A toi de l'adapter car il est possible, qu'en l'absence de ton application, quelque chose m'ait échappé. Notamment, je ne vois pas l'utilité des variables k& et z$?

Bon WE.

Cordialement.
 

Lone-wolf

XLDnaute Barbatruc
Re : Macro tourne en boucle

Bonjour bobjaz,

Et bein!! C'est quoi tous ces SELECTS!!! surpris.gif Tu prends Excel pour une mitrailleuse ou quoi??? T'as de la chance que sa fonctionne (pour l'instant) sur 2013. 1ÈRE ERREURE à se fier à l'enregistreur de macros.

2ÈME ERREURE: si tu n'as qu'une feuille c'est une chose, sinon à qu'elle feuille sont rattachés Range & Cells??? :confused:
Dans ton cas, il faut commencer par
With Sheets("MITRAILLEUSE")
.Range("a1").Value = "XXXXX"

reste du code

end with

Tu peux ajouter avant les boucles: Application.EnableEvents = False et True + Application.ScreenUpdating = False. Dans la boucle For essaie de mettre une condition qui arrête celle-ci.

EDIT: Bonjour Papou-net :)
 

Pièces jointes

  • surpris.gif
    surpris.gif
    1.8 KB · Affichages: 35
Dernière édition:

bobjazz

XLDnaute Impliqué
Re : Macro tourne en boucle

Bonjour à vous deux,

Pour la mitrailleuse, n’étant pas un grand connaisseur de VBA, j'adapte tant que je peux, après je demande de l'aide si je n'arrive pas.
:)
Pour les variables k& et z$, je ne sais pas j'ai trouvé ce code qui fonctionnait.
Je vais garder le code de Papou-net et je vais le tester sur 2010 au bureau

Encore merci à vous deux, bon week-end.

Bobjazz
 

Discussions similaires

Statistiques des forums

Discussions
312 342
Messages
2 087 432
Membres
103 543
dernier inscrit
YannBernard