Délimitation d'une plage Macro
Fermé
Tony27430
Messages postés
53
Date d'inscription
dimanche 4 octobre 2015
Statut
Membre
Dernière intervention
30 janvier 2022
-
Modifié le 18 févr. 2019 à 18:13
Tony27430 Messages postés 53 Date d'inscription dimanche 4 octobre 2015 Statut Membre Dernière intervention 30 janvier 2022 - 23 févr. 2019 à 20:41
Tony27430 Messages postés 53 Date d'inscription dimanche 4 octobre 2015 Statut Membre Dernière intervention 30 janvier 2022 - 23 févr. 2019 à 20:41
A voir également:
- Délimitation d'une plage Macro
- Macro word - Guide
- Macro logiciel - Télécharger - Organisation
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro recorder - Télécharger - Confidentialité
- Image de manchots sur une image de plage ✓ - Forum Graphisme
4 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
Modifié le 23 févr. 2019 à 10:10
Modifié le 23 févr. 2019 à 10:10
Bonjour Tony, Frenchie
Frenchie, excuse l'incruste :o)
si on l'arrête avant qu'elle termine son cycle, elle ne fonctionnera plus,
Effectivement, il vaut mieux dans ce cas ,>utiliser une astuce avec une variable "Flag" (ou autre nom) booléenne de type Static
Frenchie, excuse l'incruste :o)
si on l'arrête avant qu'elle termine son cycle, elle ne fonctionnera plus,
Effectivement, il vaut mieux dans ce cas ,>utiliser une astuce avec une variable "Flag" (ou autre nom) booléenne de type Static
Option Explicit
'---------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Lig As Byte
Static Flag As Boolean
If Target.Address = "$G$11" Then
'Désactive l'évènement
Flag = False
'modification dans la cellule C5
Lig = 5
While Cells(i, 3).Value <> ""
Lig = Lig + 1
If Lig > 17 Then Exit Sub
'Exit Sub 'test sortie accidentelle lors d'essais
Wend
Cells(Lig, 3).Value = Range("G11").Value
'Réactive l'évènement
Flag = True
End If
End Sub
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
337
21 févr. 2019 à 05:45
21 févr. 2019 à 05:45
Bonjour,
En attendant un peu plus de précisions
Si c'est pour recopier 17 fois
Si cela doit s'arrêter à C17
et là, je ne comprends pas
ce qui remplira ma colonne qui est délimité par (i=5 et i, 3 sans limite de fin)
Cdlt
En attendant un peu plus de précisions
Si c'est pour recopier 17 fois
Range(Cells(i, 3), Cells(i + 17, 3)).Value = Range("G11").Value
Si cela doit s'arrêter à C17
Range(Cells(i, 3), Cells(17, 3)).Value = Range("G11").Value
et là, je ne comprends pas
ce qui remplira ma colonne qui est délimité par (i=5 et i, 3 sans limite de fin)
Cdlt
Bonjour,
Merci pour ton retour, je vais essayé dans la soirée, je ne manquerai pas de te faire un retour.
Pour confirmé, la macro complète modifié selon tes infos elle devra être faite comme ça:
Private Sub Worksheet_Change(ByVal Target As Range)
'Désactive l'évènement
Application.EnableEvents = False
'modification dans la cellule C5
i = 5
While Cells(i, 3).Value <> ""
i = i + 1
Wend
Range(Cells(i, 3), Cells(17, 3)).Value = Range("G11").Value
'Réactive l'évènement
Application.EnableEvents = True
End Sub
Merci de ta confirmation si possible;
Pour répondre à question concernant:
"ce qui remplira ma colonne qui est délimité par (i=5 et i, 3 sans limite de fin)",
L'objectif final du projet est le suivant:
Chaque mois la valeur de "G11" est modifié, la première valeur de "G11" doit-être renvoyé en C5, lors de nouvelle valeur en "G11" elle doit-être renvoyé en "C6" sans effacé "C5", et ainsi de suite jusqu'à "C17" "MAXIMUM", ce qui n'est pas le cas avec ma macro initiale. J’espère avoir été plus clair,sur l'expression (i=5 et i, 3 sans limite de fin). Je pense qu'avec ton retour cela devrait fonctionné.......
je reviens vers toi dès la fin des essais.
Merci encore de ton retour.
Merci pour ton retour, je vais essayé dans la soirée, je ne manquerai pas de te faire un retour.
Pour confirmé, la macro complète modifié selon tes infos elle devra être faite comme ça:
Private Sub Worksheet_Change(ByVal Target As Range)
'Désactive l'évènement
Application.EnableEvents = False
'modification dans la cellule C5
i = 5
While Cells(i, 3).Value <> ""
i = i + 1
Wend
Range(Cells(i, 3), Cells(17, 3)).Value = Range("G11").Value
'Réactive l'évènement
Application.EnableEvents = True
End Sub
Merci de ta confirmation si possible;
Pour répondre à question concernant:
"ce qui remplira ma colonne qui est délimité par (i=5 et i, 3 sans limite de fin)",
L'objectif final du projet est le suivant:
Chaque mois la valeur de "G11" est modifié, la première valeur de "G11" doit-être renvoyé en C5, lors de nouvelle valeur en "G11" elle doit-être renvoyé en "C6" sans effacé "C5", et ainsi de suite jusqu'à "C17" "MAXIMUM", ce qui n'est pas le cas avec ma macro initiale. J’espère avoir été plus clair,sur l'expression (i=5 et i, 3 sans limite de fin). Je pense qu'avec ton retour cela devrait fonctionné.......
je reviens vers toi dès la fin des essais.
Merci encore de ton retour.
Tony27430
Messages postés
53
Date d'inscription
dimanche 4 octobre 2015
Statut
Membre
Dernière intervention
30 janvier 2022
21 févr. 2019 à 17:09
21 févr. 2019 à 17:09
Re,
Comme convenu je reviens vers toi, j'ai teste la ligne:
Range(Cells(i, 3), Cells(17, 3)).Value = Range("G11").Value,
Il s'arrête bien en "C17", mais en recopiant la même valeur.
Je veux: que chaque nouvelle valeur en "G11", soit affecté à la colonne "C". (C5, C6, C7...jusqu'à "C17"...
On limite bien avec la ligne "RANGE" en "C17", peut-être une mauvaise position de "i=i+1"..
Merci de tes infos….
Comme convenu je reviens vers toi, j'ai teste la ligne:
Range(Cells(i, 3), Cells(17, 3)).Value = Range("G11").Value,
Il s'arrête bien en "C17", mais en recopiant la même valeur.
Je veux: que chaque nouvelle valeur en "G11", soit affecté à la colonne "C". (C5, C6, C7...jusqu'à "C17"...
On limite bien avec la ligne "RANGE" en "C17", peut-être une mauvaise position de "i=i+1"..
Merci de tes infos….
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
337
22 févr. 2019 à 07:13
22 févr. 2019 à 07:13
Bonjour,
Et comme ceci
Cdlt
Et comme ceci
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$G$11" Then 'Désactive l'évènement Application.EnableEvents = False 'modification dans la cellule C5 i = 5 While Cells(i, 3).Value <> "" i = i + 1 If i > 17 Then Exit Sub Wend Cells(i, 3).Value = Range("G11").Value 'Réactive l'évènement Application.EnableEvents = True End If End Sub
Cdlt
Tony27430
Messages postés
53
Date d'inscription
dimanche 4 octobre 2015
Statut
Membre
Dernière intervention
30 janvier 2022
22 févr. 2019 à 17:46
22 févr. 2019 à 17:46
Re,
ok ca fonctionne, par contre j'ai été obliger de modifier légèrement, sinon pas de renvoi.
Regarde les modif de la macro que j'ai mis en place.
Private Sub Worksheet_Change(ByVal Target As Range)
'Désactive l'évènement
Application.EnableEvents = False
'modification dans la cellule C5
i = 5
While Cells(i, 3).Value <> ""
i = i + 1
If i > 17 Then Exit Sub
Wend
Cells(i, 3).Value = Range("G11").Value
'Réactive l'évènement
Application.EnableEvents = True
End Sub
Merci,
Sinon, en cas d'erreur pas moyen de rectifié sans fermer excel et de rouvrir, pas possible de construire une macro de réinitialisation.
Je passe par "Executer/Reinitialiser", mais c'est pas bon.
Obligation de fermer et de rouvrir excel.
Merci encore de tes infos.
ok ca fonctionne, par contre j'ai été obliger de modifier légèrement, sinon pas de renvoi.
Regarde les modif de la macro que j'ai mis en place.
Private Sub Worksheet_Change(ByVal Target As Range)
'Désactive l'évènement
Application.EnableEvents = False
'modification dans la cellule C5
i = 5
While Cells(i, 3).Value <> ""
i = i + 1
If i > 17 Then Exit Sub
Wend
Cells(i, 3).Value = Range("G11").Value
'Réactive l'évènement
Application.EnableEvents = True
End Sub
Merci,
Sinon, en cas d'erreur pas moyen de rectifié sans fermer excel et de rouvrir, pas possible de construire une macro de réinitialisation.
Je passe par "Executer/Reinitialiser", mais c'est pas bon.
Obligation de fermer et de rouvrir excel.
Merci encore de tes infos.
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
337
23 févr. 2019 à 06:55
23 févr. 2019 à 06:55
Bonjour,
Regarde les modif de la macro que j'ai mis en place. Vous avez retiré la ligne qui empêchait d'exécuter le test si la cellule sélectionnée était différente de G11, cela signifie donc qu'à chaque modification de la feuille, qu'importe la cellule, la macro sera exécutée.
Sinon, en cas d'erreur pas moyen de rectifié sans fermer excel et de rouvrir, pas possible de construire une macro de réinitialisation.
Je passe par "Executer/Reinitialiser", mais c'est pas bon.
Obligation de fermer et de rouvrir excel.
Oui, la macro étant dans le module de la feuille et n'agissant que sur un changement de valeurs, si l'on fait une modif (après avoir mis un point d'arrêt ou lors d'un déroulement en pas à pas) et si on l'arrête avant qu'elle termine son cycle, elle ne fonctionnera plus, d'ou la nécessité de quitter et ré-ouvrir Excel.
Cdlt
Regarde les modif de la macro que j'ai mis en place. Vous avez retiré la ligne qui empêchait d'exécuter le test si la cellule sélectionnée était différente de G11, cela signifie donc qu'à chaque modification de la feuille, qu'importe la cellule, la macro sera exécutée.
Sinon, en cas d'erreur pas moyen de rectifié sans fermer excel et de rouvrir, pas possible de construire une macro de réinitialisation.
Je passe par "Executer/Reinitialiser", mais c'est pas bon.
Obligation de fermer et de rouvrir excel.
Oui, la macro étant dans le module de la feuille et n'agissant que sur un changement de valeurs, si l'on fait une modif (après avoir mis un point d'arrêt ou lors d'un déroulement en pas à pas) et si on l'arrête avant qu'elle termine son cycle, elle ne fonctionnera plus, d'ou la nécessité de quitter et ré-ouvrir Excel.
Cdlt
Tony27430
Messages postés
53
Date d'inscription
dimanche 4 octobre 2015
Statut
Membre
Dernière intervention
30 janvier 2022
23 févr. 2019 à 14:17
23 févr. 2019 à 14:17
Bonjour,
Je viens de reprendre la macro avec : If Target.Address = "$G$11" Then,
Avec cette condition le renvoi ne se fait plus.
J'ai donc mis cette condition en commentaire, et là le renvoi est Ok.
Voilà pour l'info.
Merci
Je viens de reprendre la macro avec : If Target.Address = "$G$11" Then,
Avec cette condition le renvoi ne se fait plus.
J'ai donc mis cette condition en commentaire, et là le renvoi est Ok.
Voilà pour l'info.
Merci
23 févr. 2019 à 11:08
Excellent, merci pour l'info
Cdlt
23 févr. 2019 à 14:19
Merci de ton retour
Modifié le 23 févr. 2019 à 16:13
Bon WE
23 févr. 2019 à 20:30
While Cells(i, 3).Value <> "", il refuse le "i", qui doit selon ta variable "Flag" être nommée "Lig".
Après correction de While Cells(i, 3).Value <> "", par While Cells(Lig, 3).Value <> "",
Je n'est pas de renvoie de la valeur de "G11", et aucune erreur.
Le but de cette macro étant le renvoi de chaque nouvelle valeur de "G11", en C5 et ainsi de suite.
Je ne sais pas sous quel logiciel tu as testé, mais sur Microsooft Excel 2010 ta variable bloque le renvoi de la valeur.
Merci de ton retour...
23 févr. 2019 à 20:41
Cette macro fonction, mais pas de gestion d'erreur. Mais au moins il renvoi la valeur en C5 et ainsi de suite.
Merci de vos retours,
Private Sub Worksheet_Change(ByVal Target As Range)
'If Target.Address = "$G$11" Then
'Désactive l'évènement
Application.EnableEvents = False
'modification dans la cellule C5
i = 5
While Cells(i, 3).Value <> ""
i = i + 1
If i > 17 Then Exit Sub
Wend
Cells(i, 3).Value = Range("G11").Value
'Réactive l'évènement
Application.EnableEvents = True
'End If
End Sub
J'ai été obliger de passé en commentaires, If Target…. et End If
Sans cette manip plus de renvoi de valeur.
Merci