Problème Copie ligne
Bonjour,
Je suis entrain de faire un tableau de suivi pour mon boulot. J'essaye d'y intégrer des macros avec bouton pour faciliter la lecture.
J'ai un soucis avec une macro qui doit rajouter une nouvelle ligne à la fin du tableau avec toutes les formules et mise en page.
La ligne se rajoute mais en haut et sans rien.
Voici ma macro de base:
Sub RAJOUTDOSSIER() 'Rajouter un Dossier
Application.ScreenUpdating = False
If MsgBox("Etes-vous certain de vouloir enregistrer et rajouter une ligne ?", vbYesNo, "Demande de confirmation") = vbYes Then
ActiveWorkbook.Save
On Error Resume Next
ActiveSheet.ShowAllData
Application.EnableEvents = False
Range("A" & Range("A65536").End(xlUp).Row).Select
Selection.EntireRow.Insert
Application.EnableEvents = True
Range("A1:AG1").Select
Selection.Copy
Range("A" & Range("A65536").End(xlUp).Row - 1).Select
Application.EnableEvents = False ' => désactive les événements
ActiveSheet.Paste
Application.EnableEvents = True ' => réactive les événements
ActiveWorkbook.Save
Application.ScreenUpdating = True
End If
End Sub
Je vous mets le fichier aussi pour que vous voyez l'ensemble.
Par contre si vous trouvez pourquoi ça ne marche pas pourriez vous m'expliquer car je suis une débutante avec les macro et je souhaiterais apprendre.
Merci d'avance
Hello,
Juste pour comprendre sur quelle feuille tu veux ajouter cette macro?
Cordialement
Bonjour,
Si tu peux noter dans ta mémoire d'utiliser la balise Code pour mettre du code dans un post, ce serait bien !
Tu fournis un code qui à la fois, est mauvais (mais ce n'est pas là le problème essentiel) et soulève quelques interrogations qu'il convient d'élucider. Or tu nous mets à l'appui un fichier xlsx !!
Je dirai qu'il y a "tromperie sur la marchandise" !!!
Si tu veux bien mettre le vrai fichier xlsm, et avec la totalité de ton code, s'il te plait, on pourra alors effectivement analyser le problème.
Cordialement.
Désolée, ce n'est pas de la tromperie promis juste que j'ai mal enregistré le fichier
J'ai prévenu je suis débutante !!!!!
Donc normalement celui ci devrais aller.
Pas de soucis la prochaine fois je soignerais la présentation de mon post, c'est la premier fois que je vais sur un forum avec des lignes de code donc merci de me l'avoir dit je savais pas.
Tu recherches la dernière ligne utilisée en colonne A, qui ne contient pas de données ! Tu aurais pu voir immédiatement que la ligne trouvée serait la ligne d'en-tête ! Il faut donc utiliser une autre colonne ou s'assurer que la colonne est servie...
Par ailleurs, avec la méthode tu insères une ligne avant ta dernière ligne utilisée ! Logiquement c'est à la ligne en-dessous qu'il faudrait faire l'insertion.
Une ligne insérée prend automatiquement par défaut le format de la ligne qui précède. La gymnastique de copie qui suit est donc totalement gratuite et sans justification !!!
Il serait judicieux d'autre part d'éliminer tous les Select et Selection... Toutes les lignes comportant EnableEvents sont à supprimer, d'une absurdité totale, d'autant plus que tu n'as aucune évènementielle qui pourrait être impactée !
Si le On Error Resume Next est légitime avant ShowAllData qui risque de déclencher une erreur s'il n'y a pas de filtrage actif, il convient de rétablir la situation juste après avec On Error GoTo 0, ce qui n'est pas fait.
Bref ! Je trouve donc que la macro serait à réécrire, mais dans le contexte, je ne vois pas à quoi elle sert. Elle insère une ligne vide qu'elle ne remplit pas et entend lui donner un format qui est déjà le sien et celui de toutes les lignes qui l'entoure. Dans ces conditions on dispose de suffisamment de lignes utilisables sans avoir à insérer... !
Donc : supprimer cette macro (mais noter les problèmes multiples qu'elle posait pour éviter de les reproduire ailleurs !)
Cordialement.
Merci Mferrand
Je vais réécrire la macro en écoutant ton conseil est noté les problèmes.
Cordialement