XL 2013 macro : bug insertion de lignes

  • Initiateur de la discussion Initiateur de la discussion Jean-fred
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 ? 😕

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
 
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+
 
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 😉
 
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 !
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
506
Retour