Optimisation Macro
antoinelm
Messages postés
4
Statut
Membre
-
Le Pingou Messages postés 12646 Date d'inscription Statut Contributeur Dernière intervention -
Le Pingou Messages postés 12646 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je souhaite optimiser le code suivant qui a pour but d'ajouter une ligne et des informations sur cette ligne en cas de présence d'une cellule non vide dans la colonne 19 suite au copier-coller d'un autre fichier Excel.
Merci donc de m'aider à l'optimiser :
Sub insère_ligne1()
Dim lig As Long
Application.ScreenUpdating = False
For lig = ActiveSheet.Cells(Columns(9).Cells.Count, 9).End(xlUp).Row To 4 Step -1
If Not IsEmpty(Cells(lig, 19)) Then
Rows(lig + 1).Insert
Rows(lig + 1).Interior.Color = RGB(191, 191, 191)
Cells(lig + 1, 1).FormulaR1C1 = Cells(lig, 1).FormulaR1C1
Cells(lig + 1, 5).FormulaR1C1 = Cells(lig, 5).FormulaR1C1
Cells(lig + 1, 12).Value = Cells(lig, 19).Value
Sheets("Date Rétroplanning").Rows(lig - 1).Insert
For i = 37 To 42
Cells(lig + 1, i).FormulaR1C1 = Cells(lig, i).FormulaR1C1
Next i
For i = 1 To 50
Sheets("Date Rétroplanning").Cells(lig - 1, i).FormulaR1C1 = Sheets("Date Rétroplanning").Cells(lig - 2, i).FormulaR1C1
Next i
Cells(lig + 1, 12).Value = Cells(lig, 19).Value
For i = 2 To 4
Cells(lig + 1, i).Value = Cells(lig, i).Value
Next i
For i = 9 To 11
Cells(lig + 1, i).Value = Cells(lig, i).Value
Next i
For i = 20 To 21
Cells(lig + 1, i).Value = Cells(lig, i).Value
Next i
Cells(lig + 1, 36).Value = Cells(lig, 36).Value
Cells(lig, 19).ClearContents
End If
Next lig
End Sub
De plus,j'aimerais enregistrer la date de copier coller d'informations dans une cellule suite au copier-coller effectué. J'ai le code suivant mais celui-ci est valide en cas de modification de cellule, ce qui n'inclut pas les copier-coller :
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Target.Column = 16 Then Target.Offset(0, 31).Value = Date
End Sub
Je reste à votre disposition pour tout complément d'informations.
En vous remerciant pour votre aide.
Antoine
Je souhaite optimiser le code suivant qui a pour but d'ajouter une ligne et des informations sur cette ligne en cas de présence d'une cellule non vide dans la colonne 19 suite au copier-coller d'un autre fichier Excel.
Merci donc de m'aider à l'optimiser :
Sub insère_ligne1()
Dim lig As Long
Application.ScreenUpdating = False
For lig = ActiveSheet.Cells(Columns(9).Cells.Count, 9).End(xlUp).Row To 4 Step -1
If Not IsEmpty(Cells(lig, 19)) Then
Rows(lig + 1).Insert
Rows(lig + 1).Interior.Color = RGB(191, 191, 191)
Cells(lig + 1, 1).FormulaR1C1 = Cells(lig, 1).FormulaR1C1
Cells(lig + 1, 5).FormulaR1C1 = Cells(lig, 5).FormulaR1C1
Cells(lig + 1, 12).Value = Cells(lig, 19).Value
Sheets("Date Rétroplanning").Rows(lig - 1).Insert
For i = 37 To 42
Cells(lig + 1, i).FormulaR1C1 = Cells(lig, i).FormulaR1C1
Next i
For i = 1 To 50
Sheets("Date Rétroplanning").Cells(lig - 1, i).FormulaR1C1 = Sheets("Date Rétroplanning").Cells(lig - 2, i).FormulaR1C1
Next i
Cells(lig + 1, 12).Value = Cells(lig, 19).Value
For i = 2 To 4
Cells(lig + 1, i).Value = Cells(lig, i).Value
Next i
For i = 9 To 11
Cells(lig + 1, i).Value = Cells(lig, i).Value
Next i
For i = 20 To 21
Cells(lig + 1, i).Value = Cells(lig, i).Value
Next i
Cells(lig + 1, 36).Value = Cells(lig, 36).Value
Cells(lig, 19).ClearContents
End If
Next lig
End Sub
De plus,j'aimerais enregistrer la date de copier coller d'informations dans une cellule suite au copier-coller effectué. J'ai le code suivant mais celui-ci est valide en cas de modification de cellule, ce qui n'inclut pas les copier-coller :
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Target.Column = 16 Then Target.Offset(0, 31).Value = Date
End Sub
Je reste à votre disposition pour tout complément d'informations.
En vous remerciant pour votre aide.
Antoine
A voir également:
- Optimisation Macro
- Optimisation pc - Accueil - Utilitaires
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Optimisation découpe panneau gratuit - Télécharger - Outils professionnels
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
4 réponses
Bonjour,
Eh bien, la procédure est optimale puisqu'aucune base n'est présente comme point de référence ..... ?
Eventuellement insérer l'instruction qui suit avant la fin de la procédure :
Salutations.
Le Pingou
Eh bien, la procédure est optimale puisqu'aucune base n'est présente comme point de référence ..... ?
Eventuellement insérer l'instruction qui suit avant la fin de la procédure :
Application.ScreenUpdating = TrueDésolé.
Salutations.
Le Pingou
Bonjour,
Tu peux remplacer tes boucles :
par :
eric
edit :
celui-ci est valide en cas de modification de cellule, ce qui n'inclut pas les copier-coller
Normalement un collé génère bien un évènement Change.
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Tu peux remplacer tes boucles :
For i = 37 To 42 Cells(lig + 1, i).FormulaR1C1 = Cells(lig, i).FormulaR1C1 Next i
par :
Cells(lig + 1, 37).resize(,6).FormulaR1C1 = Cells(lig, i).FormulaR1C1
eric
edit :
celui-ci est valide en cas de modification de cellule, ce qui n'inclut pas les copier-coller
Normalement un collé génère bien un évènement Change.
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Bonjour,
Merci pour vos réponses mais cela génère une erreur 1004 liée à la dépendance du i...
En ce qui concerne l'évènement change, mon copier-coller affectant une plage de cellules et pas seulement une cellule, il est impossible d'enregistrer les dates avec ce code. Merci de m'indiquer une autre solution.
Cordialement
Merci pour vos réponses mais cela génère une erreur 1004 liée à la dépendance du i...
En ce qui concerne l'évènement change, mon copier-coller affectant une plage de cellules et pas seulement une cellule, il est impossible d'enregistrer les dates avec ce code. Merci de m'indiquer une autre solution.
Cordialement
Bonjour,
Vous apportez une petite correction à la proposition de eriiic (salutations) et ce sera bon.
La ligne doit être :
Concernant la suite je vous répète ceci:
Eh bien, la procédure est optimale puisqu'aucune base n'est présente comme point de référence ..... ?
Vous apportez une petite correction à la proposition de eriiic (salutations) et ce sera bon.
La ligne doit être :
Cells(lig + 1, 37).Resize(, 6).FormulaR1C1 = Cells(lig, 37).Resize(, 6).FormulaR1C1
Concernant la suite je vous répète ceci:
Eh bien, la procédure est optimale puisqu'aucune base n'est présente comme point de référence ..... ?