Bonjour =E0 toutes et =E0 Tous,
Avec l'aide du NG, j'avais recu la macro suivante et=20
j'aimerais la modifier pour que la macro se d=E9sactive d=E8s=20
que la derni=E8re cellule de la colonne de travail aura =E9t=E9=20
d=E9pass=E9e mais si l'on reste vers le haut du tableau sans=20
d=E9passer la derni=E8re cellule de la colonne de travail la=20
macro resterait active.=20
Merci de suivre,
Freedo
voici la macro :
Private Sub Worksheet_SelectionChange(ByVal Target As=20
Range)
Dim Adr As Range
Dim MaPlage As Range, maRef As Range
Dim memoEvents As Boolean
Dim decalage As Integer
Set MaPlage =3D Range("h:h") 'plage de travail
Set maRef =3D Range("g:g") 'plage de r=E9f=E9rence
decalage =3D MaPlage.Column - maRef.Column 'd=E9calage entre=20
la plage de travail et la plage de r=E9f=E9rence
If Not Intersect(MaPlage, Target) Is Nothing Then
If Selection.Cells.Count > 1 Then Exit Sub
If ActiveCell.Address =3D Range("h1").Address Then
Set MaPlage =3D Nothing ' lib=E8re l'espace m=E9moire
Set maRef =3D Nothing ' lib=E8re l'espace m=E9moire
Exit Sub
End If
With maRef
memoEvents =3D Application.EnableEvents
Application.EnableEvents =3D False
Set Adr =3D .Find("*", Range(ActiveCell.Offset(-1, -
decalage).Address), , , , xlNext)
Adr.Offset(0, decalage).Select
Application.EnableEvents =3D memoEvents 'conserve l'=E9tat=20
ant=E9rieur FALSE ou TRUE
End With
End If
Set MaPlage =3D Nothing ' lib=E8re l'espace m=E9moire
Set maRef =3D Nothing ' lib=E8re l'espace m=E9moire
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Julien
Bonjour,
Pour que la macro ne fonctionne qu'entre les ligne 10 et 100, par ex, modifie le code de la manière suivante :
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim Adr As Range Dim MaPlage As Range, maRef As Range Dim memoEvents As Boolean Dim decalage As Integer
If Target.Row < 10 Or Target.Row > 100 Then Exit sub
Set MaPlage = Range("h:h") 'plage de travail Set maRef = Range("g:g") 'plage de référence ... Suite de ton traitement ... End Sub
"Freedo" a écrit dans le message de news:08bb01c490d2$dca7e8a0$ Bonjour à toutes et à Tous, Avec l'aide du NG, j'avais recu la macro suivante et j'aimerais la modifier pour que la macro se désactive dès que la dernière cellule de la colonne de travail aura été dépassée mais si l'on reste vers le haut du tableau sans dépasser la dernière cellule de la colonne de travail la macro resterait active. Merci de suivre, Freedo voici la macro : Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim Adr As Range Dim MaPlage As Range, maRef As Range Dim memoEvents As Boolean Dim decalage As Integer Set MaPlage = Range("h:h") 'plage de travail Set maRef = Range("g:g") 'plage de référence decalage = MaPlage.Column - maRef.Column 'décalage entre la plage de travail et la plage de référence If Not Intersect(MaPlage, Target) Is Nothing Then If Selection.Cells.Count > 1 Then Exit Sub If ActiveCell.Address = Range("h1").Address Then Set MaPlage = Nothing ' libère l'espace mémoire Set maRef = Nothing ' libère l'espace mémoire Exit Sub End If With maRef memoEvents = Application.EnableEvents Application.EnableEvents = False Set Adr = .Find("*", Range(ActiveCell.Offset(-1, - decalage).Address), , , , xlNext) Adr.Offset(0, decalage).Select Application.EnableEvents = memoEvents 'conserve l'état antérieur FALSE ou TRUE End With End If Set MaPlage = Nothing ' libère l'espace mémoire Set maRef = Nothing ' libère l'espace mémoire End Sub
Bonjour,
Pour que la macro ne fonctionne qu'entre les ligne 10 et 100, par ex,
modifie le code de la manière suivante :
Private Sub Worksheet_SelectionChange(ByVal Target As
Range)
Dim Adr As Range
Dim MaPlage As Range, maRef As Range
Dim memoEvents As Boolean
Dim decalage As Integer
If Target.Row < 10 Or Target.Row > 100 Then Exit sub
Set MaPlage = Range("h:h") 'plage de travail
Set maRef = Range("g:g") 'plage de référence
...
Suite de ton traitement
...
End Sub
"Freedo" <anonymous@discussions.microsoft.com> a écrit dans le message de
news:08bb01c490d2$dca7e8a0$a401280a@phx.gbl...
Bonjour à toutes et à Tous,
Avec l'aide du NG, j'avais recu la macro suivante et
j'aimerais la modifier pour que la macro se désactive dès
que la dernière cellule de la colonne de travail aura été
dépassée mais si l'on reste vers le haut du tableau sans
dépasser la dernière cellule de la colonne de travail la
macro resterait active.
Merci de suivre,
Freedo
voici la macro :
Private Sub Worksheet_SelectionChange(ByVal Target As
Range)
Dim Adr As Range
Dim MaPlage As Range, maRef As Range
Dim memoEvents As Boolean
Dim decalage As Integer
Set MaPlage = Range("h:h") 'plage de travail
Set maRef = Range("g:g") 'plage de référence
decalage = MaPlage.Column - maRef.Column 'décalage entre
la plage de travail et la plage de référence
If Not Intersect(MaPlage, Target) Is Nothing Then
If Selection.Cells.Count > 1 Then Exit Sub
If ActiveCell.Address = Range("h1").Address Then
Set MaPlage = Nothing ' libère l'espace mémoire
Set maRef = Nothing ' libère l'espace mémoire
Exit Sub
End If
With maRef
memoEvents = Application.EnableEvents
Application.EnableEvents = False
Set Adr = .Find("*", Range(ActiveCell.Offset(-1, -
decalage).Address), , , , xlNext)
Adr.Offset(0, decalage).Select
Application.EnableEvents = memoEvents 'conserve l'état
antérieur FALSE ou TRUE
End With
End If
Set MaPlage = Nothing ' libère l'espace mémoire
Set maRef = Nothing ' libère l'espace mémoire
End Sub
Pour que la macro ne fonctionne qu'entre les ligne 10 et 100, par ex, modifie le code de la manière suivante :
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim Adr As Range Dim MaPlage As Range, maRef As Range Dim memoEvents As Boolean Dim decalage As Integer
If Target.Row < 10 Or Target.Row > 100 Then Exit sub
Set MaPlage = Range("h:h") 'plage de travail Set maRef = Range("g:g") 'plage de référence ... Suite de ton traitement ... End Sub
"Freedo" a écrit dans le message de news:08bb01c490d2$dca7e8a0$ Bonjour à toutes et à Tous, Avec l'aide du NG, j'avais recu la macro suivante et j'aimerais la modifier pour que la macro se désactive dès que la dernière cellule de la colonne de travail aura été dépassée mais si l'on reste vers le haut du tableau sans dépasser la dernière cellule de la colonne de travail la macro resterait active. Merci de suivre, Freedo voici la macro : Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim Adr As Range Dim MaPlage As Range, maRef As Range Dim memoEvents As Boolean Dim decalage As Integer Set MaPlage = Range("h:h") 'plage de travail Set maRef = Range("g:g") 'plage de référence decalage = MaPlage.Column - maRef.Column 'décalage entre la plage de travail et la plage de référence If Not Intersect(MaPlage, Target) Is Nothing Then If Selection.Cells.Count > 1 Then Exit Sub If ActiveCell.Address = Range("h1").Address Then Set MaPlage = Nothing ' libère l'espace mémoire Set maRef = Nothing ' libère l'espace mémoire Exit Sub End If With maRef memoEvents = Application.EnableEvents Application.EnableEvents = False Set Adr = .Find("*", Range(ActiveCell.Offset(-1, - decalage).Address), , , , xlNext) Adr.Offset(0, decalage).Select Application.EnableEvents = memoEvents 'conserve l'état antérieur FALSE ou TRUE End With End If Set MaPlage = Nothing ' libère l'espace mémoire Set maRef = Nothing ' libère l'espace mémoire End Sub
Bonjour Julien, merci pour ta solution et bien que les limites imposées fonctionnent bien ce n'était pas le but recherché mais seulement désactiver la macro dès que la dernière cellule de la colonne de travail est dépassée ou bien dès que le curseur revient en haut du tableau après dépassement en fait, à partir du moment où j'ai déjà introduit toutes données dans la colonne de travail et que j'arrive à la dernière cellule +1 , la macro doit se désactiver une fois pour toute car le but de la macro est de sauter les lignes vides de la plage de référence pour une saisie plus rapide lors de longs documents.Donc une fois toutes saisies faites, la macro ne doit plus être active.(mais pas supprimée) Voilà , j'espère avoir donné un peu plus d'info pour comprendre la macro. Merci de suivre, Freedo
-----Message d'origine----- Bonjour,
Pour que la macro ne fonctionne qu'entre les ligne 10 et 100, par ex,
modifie le code de la manière suivante :
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim Adr As Range Dim MaPlage As Range, maRef As Range Dim memoEvents As Boolean Dim decalage As Integer
If Target.Row < 10 Or Target.Row > 100 Then Exit sub
Set MaPlage = Range("h:h") 'plage de travail Set maRef = Range("g:g") 'plage de référence .... Suite de ton traitement .... End Sub
"Freedo" a écrit dans le message de
news:08bb01c490d2$dca7e8a0$ Bonjour à toutes et à Tous, Avec l'aide du NG, j'avais recu la macro suivante et j'aimerais la modifier pour que la macro se désactive dès que la dernière cellule de la colonne de travail aura été dépassée mais si l'on reste vers le haut du tableau sans dépasser la dernière cellule de la colonne de travail la macro resterait active. Merci de suivre, Freedo voici la macro : Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim Adr As Range Dim MaPlage As Range, maRef As Range Dim memoEvents As Boolean Dim decalage As Integer Set MaPlage = Range("h:h") 'plage de travail Set maRef = Range("g:g") 'plage de référence decalage = MaPlage.Column - maRef.Column 'décalage entre la plage de travail et la plage de référence If Not Intersect(MaPlage, Target) Is Nothing Then If Selection.Cells.Count > 1 Then Exit Sub If ActiveCell.Address = Range("h1").Address Then Set MaPlage = Nothing ' libère l'espace mémoire Set maRef = Nothing ' libère l'espace mémoire Exit Sub End If With maRef memoEvents = Application.EnableEvents Application.EnableEvents = False Set Adr = .Find("*", Range(ActiveCell.Offset(-1, - decalage).Address), , , , xlNext) Adr.Offset(0, decalage).Select Application.EnableEvents = memoEvents 'conserve l'état antérieur FALSE ou TRUE End With End If Set MaPlage = Nothing ' libère l'espace mémoire Set maRef = Nothing ' libère l'espace mémoire End Sub
.
Bonjour Julien,
merci pour ta solution et bien que les limites imposées
fonctionnent bien ce n'était pas le but recherché mais
seulement désactiver la macro dès que la dernière cellule
de la colonne de travail est dépassée ou bien dès que le
curseur revient en haut du tableau après dépassement
en fait, à partir du moment où j'ai déjà introduit toutes
données dans la colonne de travail et que j'arrive à la
dernière cellule +1 , la macro doit se désactiver une fois
pour toute car le but de la macro est de sauter les lignes
vides de la plage de référence pour une saisie plus rapide
lors de longs documents.Donc une fois toutes saisies
faites, la macro ne doit plus être active.(mais pas
supprimée)
Voilà , j'espère avoir donné un peu plus d'info pour
comprendre la macro.
Merci de suivre,
Freedo
-----Message d'origine-----
Bonjour,
Pour que la macro ne fonctionne qu'entre les ligne 10 et
100, par ex,
modifie le code de la manière suivante :
Private Sub Worksheet_SelectionChange(ByVal Target As
Range)
Dim Adr As Range
Dim MaPlage As Range, maRef As Range
Dim memoEvents As Boolean
Dim decalage As Integer
If Target.Row < 10 Or Target.Row > 100 Then Exit sub
Set MaPlage = Range("h:h") 'plage de travail
Set maRef = Range("g:g") 'plage de référence
....
Suite de ton traitement
....
End Sub
"Freedo" <anonymous@discussions.microsoft.com> a écrit
dans le message de
news:08bb01c490d2$dca7e8a0$a401280a@phx.gbl...
Bonjour à toutes et à Tous,
Avec l'aide du NG, j'avais recu la macro suivante et
j'aimerais la modifier pour que la macro se désactive dès
que la dernière cellule de la colonne de travail aura été
dépassée mais si l'on reste vers le haut du tableau sans
dépasser la dernière cellule de la colonne de travail la
macro resterait active.
Merci de suivre,
Freedo
voici la macro :
Private Sub Worksheet_SelectionChange(ByVal Target As
Range)
Dim Adr As Range
Dim MaPlage As Range, maRef As Range
Dim memoEvents As Boolean
Dim decalage As Integer
Set MaPlage = Range("h:h") 'plage de travail
Set maRef = Range("g:g") 'plage de référence
decalage = MaPlage.Column - maRef.Column 'décalage entre
la plage de travail et la plage de référence
If Not Intersect(MaPlage, Target) Is Nothing Then
If Selection.Cells.Count > 1 Then Exit Sub
If ActiveCell.Address = Range("h1").Address Then
Set MaPlage = Nothing ' libère l'espace mémoire
Set maRef = Nothing ' libère l'espace mémoire
Exit Sub
End If
With maRef
memoEvents = Application.EnableEvents
Application.EnableEvents = False
Set Adr = .Find("*", Range(ActiveCell.Offset(-1, -
decalage).Address), , , , xlNext)
Adr.Offset(0, decalage).Select
Application.EnableEvents = memoEvents 'conserve l'état
antérieur FALSE ou TRUE
End With
End If
Set MaPlage = Nothing ' libère l'espace mémoire
Set maRef = Nothing ' libère l'espace mémoire
End Sub
Bonjour Julien, merci pour ta solution et bien que les limites imposées fonctionnent bien ce n'était pas le but recherché mais seulement désactiver la macro dès que la dernière cellule de la colonne de travail est dépassée ou bien dès que le curseur revient en haut du tableau après dépassement en fait, à partir du moment où j'ai déjà introduit toutes données dans la colonne de travail et que j'arrive à la dernière cellule +1 , la macro doit se désactiver une fois pour toute car le but de la macro est de sauter les lignes vides de la plage de référence pour une saisie plus rapide lors de longs documents.Donc une fois toutes saisies faites, la macro ne doit plus être active.(mais pas supprimée) Voilà , j'espère avoir donné un peu plus d'info pour comprendre la macro. Merci de suivre, Freedo
-----Message d'origine----- Bonjour,
Pour que la macro ne fonctionne qu'entre les ligne 10 et 100, par ex,
modifie le code de la manière suivante :
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim Adr As Range Dim MaPlage As Range, maRef As Range Dim memoEvents As Boolean Dim decalage As Integer
If Target.Row < 10 Or Target.Row > 100 Then Exit sub
Set MaPlage = Range("h:h") 'plage de travail Set maRef = Range("g:g") 'plage de référence .... Suite de ton traitement .... End Sub
"Freedo" a écrit dans le message de
news:08bb01c490d2$dca7e8a0$ Bonjour à toutes et à Tous, Avec l'aide du NG, j'avais recu la macro suivante et j'aimerais la modifier pour que la macro se désactive dès que la dernière cellule de la colonne de travail aura été dépassée mais si l'on reste vers le haut du tableau sans dépasser la dernière cellule de la colonne de travail la macro resterait active. Merci de suivre, Freedo voici la macro : Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim Adr As Range Dim MaPlage As Range, maRef As Range Dim memoEvents As Boolean Dim decalage As Integer Set MaPlage = Range("h:h") 'plage de travail Set maRef = Range("g:g") 'plage de référence decalage = MaPlage.Column - maRef.Column 'décalage entre la plage de travail et la plage de référence If Not Intersect(MaPlage, Target) Is Nothing Then If Selection.Cells.Count > 1 Then Exit Sub If ActiveCell.Address = Range("h1").Address Then Set MaPlage = Nothing ' libère l'espace mémoire Set maRef = Nothing ' libère l'espace mémoire Exit Sub End If With maRef memoEvents = Application.EnableEvents Application.EnableEvents = False Set Adr = .Find("*", Range(ActiveCell.Offset(-1, - decalage).Address), , , , xlNext) Adr.Offset(0, decalage).Select Application.EnableEvents = memoEvents 'conserve l'état antérieur FALSE ou TRUE End With End If Set MaPlage = Nothing ' libère l'espace mémoire Set maRef = Nothing ' libère l'espace mémoire End Sub