VBA Excel selectionner un plage
Résolu/Fermé
Lila_35
-
18 juin 2009 à 16:01
coco_rico Messages postés 32 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 19 juin 2009 - 19 juin 2009 à 13:56
coco_rico Messages postés 32 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 19 juin 2009 - 19 juin 2009 à 13:56
A voir également:
- VBA Excel selectionner un plage
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
- Excel compter cellule couleur sans vba - Guide
13 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 310
18 juin 2009 à 22:36
18 juin 2009 à 22:36
BonsoIr Lila, Coco_rico
si j'ai compris ta demande
ci dessus procédures pour créer des validations de données (et non combobox?) dans la plage Q7:Q63
la macro macrosrange a été optimisée mais est à compléter:
----------------------
Option Explicit
Ci joint tite démo avec uniquement liste pour "domaine1"
https://www.cjoint.com/?gswJbrgMUA
Cordialement, Michel
si j'ai compris ta demande
ci dessus procédures pour créer des validations de données (et non combobox?) dans la plage Q7:Q63
la macro macrosrange a été optimisée mais est à compléter:
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("Q4:Q63")) Is Nothing Then: Exit Sub Application.Run ("macros.xls!MacrosChange") End Sub --
----------------------
Option Explicit
Sub MacrosChange() Dim liste As String Select Case ActiveCell Case Is = "domaine1" liste = "=cdpr1" Case Is = "domaine2" liste = "=cdpr2" '......autres cas dom3 &4&1.... Case Else Exit Sub End Select With Range(ActiveCell.Address).Validation .Delete .Add Type:=xlValidateList, Formula1:=liste End With End Sub
Ci joint tite démo avec uniquement liste pour "domaine1"
https://www.cjoint.com/?gswJbrgMUA
Cordialement, Michel
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
19 juin 2009 à 12:11
19 juin 2009 à 12:11
re lila, bjr coco_rico
Pour éviter d'avoir à dé-sélectionner: ne pas utiliser "select"
et un message pour indiquer que le boulot est fait...
With Range("R4:R63").Validation
.Delete
.Add Type:=xlValidateList, Formula1:=liste
End With
Msgbox " Colonne R préparée avec succès."
Pour éviter d'avoir à dé-sélectionner: ne pas utiliser "select"
et un message pour indiquer que le boulot est fait...
With Range("R4:R63").Validation
.Delete
.Add Type:=xlValidateList, Formula1:=liste
End With
Msgbox " Colonne R préparée avec succès."
coco_rico
Messages postés
32
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
19 juin 2009
18 juin 2009 à 16:44
18 juin 2009 à 16:44
bonjour,
j'avoue ne pas avoir tout compris ton pb mais sache que vba ne retient que le dernier événement change dans Worksheet_Change(). Essaie de lancer le débogueur pour piéger target.address pour te faire une idée de la ligne de code qui ne marche pas.
si t'éclaires un peu plus ton pb, peut-être pourra-t-on faire autrement?
bon courage.
j'avoue ne pas avoir tout compris ton pb mais sache que vba ne retient que le dernier événement change dans Worksheet_Change(). Essaie de lancer le débogueur pour piéger target.address pour te faire une idée de la ligne de code qui ne marche pas.
si t'éclaires un peu plus ton pb, peut-être pourra-t-on faire autrement?
bon courage.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Désolé c'est pas facile à mettre sur le papier.
Pour "essayé" de résumer,
ça fonctionne très bien mais uniquement pour Q4.
Ce que je souhaiterai c'est:
La macro se trouve sur un autre fichier que ma feuille de calcule
Faut il passer un paramètre à la macro ? une adresse ?
Merci pour le coup d'œil.
Pour "essayé" de résumer,
Private Sub Worksheet_Change(ByVal Target As Range) Select Case Target.Address Case Range("Q4").Address Application.Run "'" & Excel.ActiveWorkbook.Path & "\MaMacro.xls'!MacrosChange" End Select End Sub
ça fonctionne très bien mais uniquement pour Q4.
Ce que je souhaiterai c'est:
Private Sub Worksheet_Change(ByVal Target As Range) Select Case Target.Address Case Range("Q4:Q63").Address ' ou Case Range("Q4").ends(xldown).adress Application.Run "'" & Excel.ActiveWorkbook.Path & "\MaMacro.xls'!MacrosChange" End Select End Sub
La macro se trouve sur un autre fichier que ma feuille de calcule
Faut il passer un paramètre à la macro ? une adresse ?
Merci pour le coup d'œil.
coco_rico
Messages postés
32
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
19 juin 2009
18 juin 2009 à 17:46
18 juin 2009 à 17:46
je subodore que le pb vient de ta target.address, essaie de le piéger avec le débogueur. ceci dit, ta MacrosChange ne fait référence qu'à la valeur de "Q4"?
Quant à lancer ta macro à distance, Application.Run "MaMacro.xls!MacrosChange" devrait suffire, par contre tu devra penser à refermer le classeur qui la contient après.
Tu me diras si ça échoue?
bon courage.
Quant à lancer ta macro à distance, Application.Run "MaMacro.xls!MacrosChange" devrait suffire, par contre tu devra penser à refermer le classeur qui la contient après.
Tu me diras si ça échoue?
bon courage.
Bonjour,
Tu m'as mis sur une bonne voie michel_m.
On rentre bien dans la macro très bien optimisée, merci beaucoup.
Mon problème n'est toujours pas résolu car la validation des données doit servir pour la colonne suivante ("R"). Je ne sais pas si je suis bien clair.
J'ai toute une liste d'incident ( clef primaire num_inc ) appartenant a 3 types de domaines (domaine1,domaine2,domaine3) trié d'abord par domaine puis par num_inc:
1155 problem1 entrant J6081 domaine1
9260 pb formatage J6081 domaine1
11565 Abend transaction 36UG J6083 domaine1
1453 Pb locatisation domaine2
9100 VERIFdomaine domaine2
2197 Mise à jour orga non effective domaine3
3139 Livraison domaine3
9261 pb ecriture domaine3
Répartie en 3 validation de données cdpr1 cdpr2 et cdpr3 (respectivement domaine1,domaine2,domaine3) contenant les num_inc (domaine1:1155,9260,11565 ; domaine2:1453,9100 ; domaine3:2197,3139,9261)
Sur des autre feuilles (janvier,fevrier,mars,...,decembre) lorsque l'on choisi un domaine ("Q"), cela affecte à la colonne des num_inc ("R") où on aura cdpr1 ou cdpr2 ou cdpr3.
Actuellement, quand je choisi le domaine colonne "Q" il m'affecte les num_inc sur cette même colonne.
J'ai un accès restreint à internet et je ne peux donc pas tester la tite demo michel_m mais merci pour l'attention portée.
Cordialement.
Tu m'as mis sur une bonne voie michel_m.
On rentre bien dans la macro très bien optimisée, merci beaucoup.
Mon problème n'est toujours pas résolu car la validation des données doit servir pour la colonne suivante ("R"). Je ne sais pas si je suis bien clair.
J'ai toute une liste d'incident ( clef primaire num_inc ) appartenant a 3 types de domaines (domaine1,domaine2,domaine3) trié d'abord par domaine puis par num_inc:
1155 problem1 entrant J6081 domaine1
9260 pb formatage J6081 domaine1
11565 Abend transaction 36UG J6083 domaine1
1453 Pb locatisation domaine2
9100 VERIFdomaine domaine2
2197 Mise à jour orga non effective domaine3
3139 Livraison domaine3
9261 pb ecriture domaine3
Répartie en 3 validation de données cdpr1 cdpr2 et cdpr3 (respectivement domaine1,domaine2,domaine3) contenant les num_inc (domaine1:1155,9260,11565 ; domaine2:1453,9100 ; domaine3:2197,3139,9261)
Sur des autre feuilles (janvier,fevrier,mars,...,decembre) lorsque l'on choisi un domaine ("Q"), cela affecte à la colonne des num_inc ("R") où on aura cdpr1 ou cdpr2 ou cdpr3.
Actuellement, quand je choisi le domaine colonne "Q" il m'affecte les num_inc sur cette même colonne.
J'ai un accès restreint à internet et je ne peux donc pas tester la tite demo michel_m mais merci pour l'attention portée.
Cordialement.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
19 juin 2009 à 10:26
19 juin 2009 à 10:26
bonjour,
c'était peut-être au départ qu'il fallait mettre ta description...
Je jetterai un oeil cet aprem...
c'était peut-être au départ qu'il fallait mettre ta description...
Je jetterai un oeil cet aprem...
Je pense m'en être sorti par un Select dans la macro :
Après, je ne sais pas comment dé sélectionner mais ça n'est pas le souci majeur.
Toutes mes salutations à michel_m pour ton aide très précieuse
C'est le Intersect(Target, Range("Q4:Q63")) qui m'a sauvé.
Cordialement.
Sub MacrosChange() Dim liste As String Select Case ActiveCell Case Is = "domaine1" liste = "=CdPr1" Case Is = "domaine2" liste = "=CdPr2" Case Is = "domaine3L" liste = "=CdPr3" Case Else Exit Sub End Select Range("R4:R63").Select With Selection.Validation .Delete .Add Type:=xlValidateList, Formula1:=liste End With End Sub
Après, je ne sais pas comment dé sélectionner mais ça n'est pas le souci majeur.
Toutes mes salutations à michel_m pour ton aide très précieuse
C'est le Intersect(Target, Range("Q4:Q63")) qui m'a sauvé.
Cordialement.
coco_rico
Messages postés
32
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
19 juin 2009
19 juin 2009 à 11:20
19 juin 2009 à 11:20
slt Lila, Michel,
super. Lila ne peux dé sélectionner que par une autre sélection.
bonne continuation à vous.
super. Lila ne peux dé sélectionner que par une autre sélection.
bonne continuation à vous.
coco_rico
Messages postés
32
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
19 juin 2009
19 juin 2009 à 13:56
19 juin 2009 à 13:56
effectivement. décidément, t'es super efficace michel.
bonne journée à vous
bonne journée à vous