OVH Cloud OVH Cloud

code a verifier?

13 réponses
Avatar
Lionel
bonjour

Voici un code

Lorsque je lance la macro je verifie que je suis sur une ligne "autorisée"
puis je selectionne la portion colonne 5 a 35 et je l'efface puis je me
replace dans la cellule ou je me trouvais avant de lancer la macro...

Sub EffacePlanning()
Application.ScreenUpdating = False
c = ActiveCell.Column
r = ActiveCell.Row
If r <> 5 And r <> 9 And r <> 13 And r <> 17 And r <> 21 And r <> 25 And
r <> 29 And r <> 33 And r <> 37 And r <> 41 And r <> 45 And r <> 49 And r <>
53 And r <> 57 And r <> 61 And r <> 65 And r <> 69 And r <> 73 And r <> 77
And r <> 81 And r <> 85 And r <> 89 And r <> 93 And r <> 97 And r <> 101 And
r <> 105 And r <> 109 And r <> 113 And r <> 117 And r <> 121 Then Exit Sub
Range(Cells(r, 5), Cells(r, 35)).Select
For Each cell In Selection
cell.Value = ""
Next
Cells(r, c).Select
Application.ScreenUpdating = False
End Sub

seulement voila lorsque je lance la macro elle dure plusieurs minutes a
s'executer...
QQ'1 voit il ou est le probleme

Merci d'avance
Lionel

3 réponses

1 2
Avatar
cousinhub
Re-,
une autre solution, si toutes les valeurs de ta zone, toujours la même,
sont à supprimer :
1/ Un petit peu de boulot :
. Nommes ta zone
Insertion/Nom/Définir
Case "Noms dans le classeur" : base
. "Fait référence à" : Sélectionnes toutes les cellules de ta zone
avec ta souris, tout en maintenant la touche "Ctrl" appuyée

2/ Ta macro :
Sub supp()
Range("base").ClearContents
End Sub

Bon courage

Bonsoir,
une autre approche...
http://cjoint.com/?dxuuW8qJpe


Déprotection des cellules de la feuille de calcul
Protection des lignes non concernées par la "purge"
protection de la feuille
"Purge"
Déprotection de la feuille
Protection des cellules

PS : par défaut, toutes les cellules d'une feuille de calcul sont
protégées...
et les cellules concernées (de la colonne 5, ligne 2 à la colonne 35
ligne 121) supprimées en 0.10 seconde environ

Reviens si tu as un souci
Bonne soirée



bonjour

Voici un code

Lorsque je lance la macro je verifie que je suis sur une ligne
"autorisée"
puis je selectionne la portion colonne 5 a 35 et je l'efface puis je me
replace dans la cellule ou je me trouvais avant de lancer la macro...

Sub EffacePlanning()
Application.ScreenUpdating = False
c = ActiveCell.Column
r = ActiveCell.Row
If r <> 5 And r <> 9 And r <> 13 And r <> 17 And r <> 21 And r <>
25 And
r <> 29 And r <> 33 And r <> 37 And r <> 41 And r <> 45 And r <> 49
And r <>
53 And r <> 57 And r <> 61 And r <> 65 And r <> 69 And r <> 73 And r
<> 77
And r <> 81 And r <> 85 And r <> 89 And r <> 93 And r <> 97 And r <>
101 And
r <> 105 And r <> 109 And r <> 113 And r <> 117 And r <> 121 Then Exit
Sub
Range(Cells(r, 5), Cells(r, 35)).Select
For Each cell In Selection
cell.Value = ""
Next
Cells(r, c).Select
Application.ScreenUpdating = False
End Sub

seulement voila lorsque je lance la macro elle dure plusieurs minutes a
s'executer...
QQ'1 voit il ou est le probleme

Merci d'avance
Lionel






Avatar
Jacky
Re....
Ton code efface tout sauf les lignes 5,9,...
Etonnant ça....

Teste ceci:
http://cjoint.com/?dxwfuB5FJO

Par ailleurs qu'est ce qui peut ralentir l'execution d'une macro?
Des codes événementiels par exemple, en tout cas pas ce code ci.

Salutations
JJ

"Lionel" a écrit dans le message de news:
46043b7b$0$5095$
Rebonsoir,

Ton code efface tout sauf les lignes 5,9,... et c'est exactement le
contraire de ce que je recherche...
Le contenu des lignes 5, 9,...,121 doit etre effacé, pâs celui des lignes
6-7-8, 10-11-12,...122-123-124

Je vais tenter d'adapter le test pour obtenir ce que je recherche
Merci pour l'aide...
Par ailleurs qu'est ce qui peut ralentir l'execution d'une macro?
Merci a+
Lionel

"Jacky" a écrit dans le message de news:

Re....
i = r ? de tete ton code semble faire l'inverse du voulu
Bien c'est ben vrai aussi.....je suis distrait ;o)

Bien que cela n'explique pas la lenteur.
Si tu n'as pas trouvé entre temps....ceci alors
'-------------
Sub EffacePlanning()
Application.ScreenUpdating = False
r = ActiveCell.Row
For i = 5 To 121 Step 4
If i = r Then Range(Cells(r, 5), Cells(r, 35)).ClearContents
Next
Application.ScreenUpdating = False
End Sub
End Sub
'---------------

--
Salutations
JJ


"Lionel" a écrit dans le message de news:
46041342$0$25944$
Bonsoir
Dans ton code je ne comprends pas le test
i = r ? de tete ton code semble faire l'inverse du voulu
car je veux uniquement la possiblité de l'effacement des lignes
5,9,etc

"Jacky" a écrit dans le message de news:

Bonsoir,
Essaie comme cela....
'--------
Sub EffacePlanning()
Application.ScreenUpdating = False
c = ActiveCell.Column
r = ActiveCell.Row
For i = 5 To 121 Step 4
If i = r Then Exit Sub
Next
Range(Cells(r, 5), Cells(r, 35)).ClearContents
Application.ScreenUpdating = False
End Sub
'-------------

--
Salutations
JJ


"Lionel" a écrit dans le message de news:
46040032$0$27373$
bonjour

Voici un code

Lorsque je lance la macro je verifie que je suis sur une ligne
"autorisée"


puis je selectionne la portion colonne 5 a 35 et je l'efface puis je
me




replace dans la cellule ou je me trouvais avant de lancer la
macro...

Sub EffacePlanning()
Application.ScreenUpdating = False
c = ActiveCell.Column
r = ActiveCell.Row
If r <> 5 And r <> 9 And r <> 13 And r <> 17 And r <> 21 And r <>
25




And
r <> 29 And r <> 33 And r <> 37 And r <> 41 And r <> 45 And r <> 49
And




r
<>
53 And r <> 57 And r <> 61 And r <> 65 And r <> 69 And r <> 73 And r
<>




77
And r <> 81 And r <> 85 And r <> 89 And r <> 93 And r <> 97 And r <>
101
And
r <> 105 And r <> 109 And r <> 113 And r <> 117 And r <> 121 Then
Exit




Sub
Range(Cells(r, 5), Cells(r, 35)).Select
For Each cell In Selection
cell.Value = ""
Next
Cells(r, c).Select
Application.ScreenUpdating = False
End Sub

seulement voila lorsque je lance la macro elle dure plusieurs
minutes
a




s'executer...
QQ'1 voit il ou est le probleme

Merci d'avance
Lionel




















Avatar
cousinhub
Bonsoir,
pour ta dernière question, si tu as un évènement provoqué par une
modification dans ta feuille

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ou
Private Sub Worksheet_Change(ByVal Target As Range)

par exemple,

cela veut dire que chaque modification impose un calcul, donc,
ralentissement....Le fait que tu donnes une valeur à une cellule impose
l'exécution de ta Private Sub

Bonne soirée


Rebonsoir,

Ton code efface tout sauf les lignes 5,9,... et c'est exactement le
contraire de ce que je recherche...
Le contenu des lignes 5, 9,...,121 doit etre effacé, pâs celui des lignes
6-7-8, 10-11-12,...122-123-124

Je vais tenter d'adapter le test pour obtenir ce que je recherche
Merci pour l'aide...
Par ailleurs qu'est ce qui peut ralentir l'execution d'une macro?
Merci a+
Lionel

"Jacky" a écrit dans le message de news:

Re....
i = r ? de tete ton code semble faire l'inverse du voulu
Bien c'est ben vrai aussi.....je suis distrait ;o)

Bien que cela n'explique pas la lenteur.
Si tu n'as pas trouvé entre temps....ceci alors
'-------------
Sub EffacePlanning()
Application.ScreenUpdating = False
r = ActiveCell.Row
For i = 5 To 121 Step 4
If i = r Then Range(Cells(r, 5), Cells(r, 35)).ClearContents
Next
Application.ScreenUpdating = False
End Sub
End Sub
'---------------

--
Salutations
JJ


"Lionel" a écrit dans le message de news:
46041342$0$25944$
Bonsoir
Dans ton code je ne comprends pas le test
i = r ? de tete ton code semble faire l'inverse du voulu
car je veux uniquement la possiblité de l'effacement des lignes 5,9,etc

"Jacky" a écrit dans le message de news:

Bonsoir,
Essaie comme cela....
'--------
Sub EffacePlanning()
Application.ScreenUpdating = False
c = ActiveCell.Column
r = ActiveCell.Row
For i = 5 To 121 Step 4
If i = r Then Exit Sub
Next
Range(Cells(r, 5), Cells(r, 35)).ClearContents
Application.ScreenUpdating = False
End Sub
'-------------

--
Salutations
JJ


"Lionel" a écrit dans le message de news:
46040032$0$27373$
bonjour

Voici un code

Lorsque je lance la macro je verifie que je suis sur une ligne
"autorisée"


puis je selectionne la portion colonne 5 a 35 et je l'efface puis je
me




replace dans la cellule ou je me trouvais avant de lancer la macro...

Sub EffacePlanning()
Application.ScreenUpdating = False
c = ActiveCell.Column
r = ActiveCell.Row
If r <> 5 And r <> 9 And r <> 13 And r <> 17 And r <> 21 And r <>
25




And
r <> 29 And r <> 33 And r <> 37 And r <> 41 And r <> 45 And r <> 49
And




r
<>
53 And r <> 57 And r <> 61 And r <> 65 And r <> 69 And r <> 73 And r
<>




77
And r <> 81 And r <> 85 And r <> 89 And r <> 93 And r <> 97 And r <>
101
And
r <> 105 And r <> 109 And r <> 113 And r <> 117 And r <> 121 Then
Exit




Sub
Range(Cells(r, 5), Cells(r, 35)).Select
For Each cell In Selection
cell.Value = ""
Next
Cells(r, c).Select
Application.ScreenUpdating = False
End Sub

seulement voila lorsque je lance la macro elle dure plusieurs minutes
a




s'executer...
QQ'1 voit il ou est le probleme

Merci d'avance
Lionel

















1 2