XL 2013 macro : bug insertion de lignes

Jean-fred

XLDnaute Nouveau
j'ai un souci assez déconcertant avec mon fichier excel . J'ai enregistré une macro qui copie les lignes d'un tableau et les insère dans une autre feuille. Des fois ça marche sans problème , mais certaines fois ça se plante complètement , surtout sur des ordinateurs autres que le mien. le débogueur marque en jaune la partie " Rows("6:6").Insert Shift:=xlDown" de la macro. Quelqu'un pourrait-il me dire ou se situe le problème ? :confused:

Sub valcaiss()

' valcaiss Macro

If MsgBox("confirmez-vous l'ajout des données relatives aux caissières ?", vbYesNo, "confirmation") = vbYes Then

Range("A12:F47").Select
Selection.Copy
Sheets("TABLEAU CAISSIERE").Select
Rows("6:6").Insert Shift:=xlDown
Sheets("RECAP CAISSIERES").Select
Range("A4").Select
Application.CutCopyMode = False
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
Sheets("MENU").Select
Range("A12").Select
End If


End Sub
 

BrunoM45

XLDnaute Barbatruc
Bonjour Jean-Fred

En développement, il faut absolument éviter les "Select"

N'ayant pas de fichier, essaye avec ceci
VB:
Sub ValCaisse()
  ' valcaiss Macro
  If MsgBox("confirmez-vous l'ajout des données relatives aux caissières ?", _
    vbYesNo, "confirmation") = vbNo Then Exit Sub
  ' Sinon
  Sheets("RECAP CAISSIERES").Range("A12:F47").Copy
  Sheets("TABLEAU CAISSIERE").Rows("6:6").Insert Shift:=xlDown
  Application.CutCopyMode = False
  Sheets("RECAP CAISSIERES").PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
End Sub
A+
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, jean-fred, BrunoM45

Une autre syntaxe possible (en me basant sur le nom de la macro) qui ne traite que les valeurs seules et donc ne passe pas par le copier coller
Et pour varier les plaisirs, j'ai décidé d'utiliser un Select Case/End Select
VB:
Sub ValCaisseII()
Dim vQ, r1 As Range, r2 As Range
Set r1 = Sheets("RECAP CAISSIERES").Range("A12:F47"): Set r2 = Sheets("TABLEAU CAISSIERE").Cells(Rows.Count, 1).End(3)(2)

vQ = MsgBox("Confirmez-vous l'ajout des données relatives aux caissières ?", 4, "Confirmation")

Select Case vQ
Case 6
r2.Resize(r1.Rows.Count, r1.Columns.Count).Value = r1.Value
Case 7
Exit Sub
End Select
End Sub
PS: Test OK sur le fichier non joint dans le 1er message ;)
 

Jean-fred

XLDnaute Nouveau
Bonjour Brunos et Spatel,
Déjà merci pour vos interventions.
Bruno , j'ai inséré la macro que tu as écrit, mais le bug n'a pas disparu, quoiqu'il survient moins fréquemment.
Staple , ta macro fonctionne, cependant l'insertion de la plage de cellules est incomplète ( la date n'est pas inséré , TCD ne s'actualise pas...)

J'ai mis le fichier en pièce jointe. Comme ça vous pourrez bien voir ses failles et apporter des améliorations. Merci d'avance de votre aide !
 

Fichiers joints

Discussions similaires


Haut Bas