Deux Macro identiques sur deux colonnes voisines: possible ?

  • Initiateur de la discussion Initiateur de la discussion Fluffy
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

F

Fluffy

Guest
Bonsoire à tous !

Je souhaite avoir sur deux colonnes voisines la même Macro

(en l'occurence pour un calendrier: If Target.Count > 1 Then Exit Sub
If Not Application.Intersect(Target, Range("A1:A1000")) Is Nothing Then UserForm1.Show
End Sub)

Ca fonctionne parfaitement pour une colonne, mais je suis incapable d'avoir la même chose à côté (l'idée c'est d'avoir date de départ et date d'arrivée via le calendrier).

Je vous joint un fichier ou j'ai "tenté" de mettre les deux (Colonnes A et B en feuille 4).

Quel est le problème ... et la solution🙄

Merci à vous
 

Pièces jointes

Re : Deux Macro identiques sur deux colonnes voisines: possible ?

Bonsoir Fluffy,

Une seule macro SelectionChange :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A1:B1000")) Is Nothing _
  And Target.Count = 1 Then UserForm1.Show
End Sub
Je subodore des questions à tiroirs...

A+
 
Re : Deux Macro identiques sur deux colonnes voisines: possible ?

Hello,

Tu subodores bien...

D'une part j'aimerais comprendre:
Pourquoi A1 (alors que ca à l'air de fonctionner jusqu'à l'infini ?) et pourquoi en revanche B1000 ? (alors que ça marche avec B1).

Par aileurs j'ai essayé de modifier ta macro en changeant les colonnes et.... j'ai foutu la merdre (pardon pour ce language !).

Car je veux l'avoir dans deux colonnes, mais à partir de la ligne 4.

Je te joint mon doc en pièce jointe (sur la feuille 5).

Merci à toi de ton aide.
 

Pièces jointes

Re : Deux Macro identiques sur deux colonnes voisines: possible ?

Bonjour Fluffy, le forum,

Si j'ai bien compris, tu veux que ton userform1 apparaissent suite à un changement dans une cellule des colonnes A ou B à partir de la ligne 4. Si c'est le cas, tu n'as qu'à modifier la macro de job75 ainsi :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Not Application.Intersect(Target, Range("A4:B1000")) Is Nothing _
   And Target.Count = 1 Then UserForm1.Show
 End Sub

Tu n'as qu'à modifier la plage comme tu veux. Ici c'est arbitrairement de A4 jusqu'à B1000, mais rien t'empêche de mettre A4:B10000.
Ton userform apparaît si les 2 conditions suivants sont remplies :
1. une seule cellule est sélectionnée (target.count = 1)
2. la cellule sélectionnée est à l'intérieur de la plage A4:B1000

A+
 
Re : Deux Macro identiques sur deux colonnes voisines: possible ?

Bonsoir,

Je me suis mal exprimé.

Je souhaite pouvoir sélectionner des dates à partir d'un calendrier.

Mais je souhaite pouvoir faire la même chose dans deux colonnes (d'où le titre du post).

Concrétement que dans ma colonne D (mais uniqument à partir de la ligne 4) apparaisse un calendrier (jusqu'à l'infini si possible dans cette colonne).

Et idem dans la colonne E (toujours à partir de la ligne 4 et si possible jusqu'à l'infini dans la colonne).

Donc en réalité les deux colonnes (D et E) sont indépendantes mais permettent de faire la même chose.

J'espère avoir été plus claire su ce coup 😕

Bien à vous.
 
Re : Deux Macro identiques sur deux colonnes voisines: possible ?

Re, salut Grand Chaman Excel, CISCO 🙂

Vu Le Bon classeur, j'ai adapté avec une macro plus simple :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(ActiveCell, Range("D4:E1000")) Is Nothing _
  Then UserForm1.Show
End Sub
J'ai aussi ajouté l'UserForm avec le Calendar.

Fichier joint.

A+
 

Pièces jointes

Re : Deux Macro identiques sur deux colonnes voisines: possible ?

Re,

2 améliorations dans ce fichier (2) :

- avec cette macro on ira "jusqu'à l'infini" :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(ActiveCell, Range("D4:E" & Rows.Count)) Is Nothing _
  Then UserForm1.Show
End Sub
- le Calendar apparaît avec la date du jour.

A+
 

Pièces jointes

Re : Deux Macro identiques sur deux colonnes voisines: possible ?

Merci pour toute cette aide.

Mon est preque résolu. Je dis presque car passé un certain point, vers la ligne 38, Excel plante.
La Macro fonctionne parfaitement et si je me place sur la ligne, 85, par exemple, non seulement le calendrier ne s'ouvre plus, mais Excel se fige (ne reste plus alors que Crtl Alt Supp).

Une idée de l'origine de ce "petit" désordre ?

Merci à vous
 
Re : Deux Macro identiques sur deux colonnes voisines: possible ?

Re,

L'USF ne peut se positionner hors de l'écran.

Enlever le positionnement par rapport à la cellule active.

Fichier (3).

A+
 

Pièces jointes

Re : Deux Macro identiques sur deux colonnes voisines: possible ?

Re,

On peut aussi supprimer l'USF et mettre le calendrier dans la feuille de calcul.

Les macros dans le code de la feuille :

Code:
Private Sub Calendar1_Click()
ActiveCell = Calendar1
Calendar1.Visible = False
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Application.Intersect(ActiveCell, Range("D4:E" & Rows.Count)) Is Nothing Then
  Calendar1.Visible = False
Else
  Calendar1 = Date
  Calendar1.Top = ActiveCell.Top
  Calendar1.Left = ActiveCell.Offset(, 2).Left
  Calendar1.Visible = True
End If
End Sub
Fichier (3).

A+
 

Pièces jointes

Dernière édition:
Re : Deux Macro identiques sur deux colonnes voisines: possible ?

Re,

Bon avec l'USF il faut utiliser VisibleRange :

Code:
Private Sub UserForm_Initialize()
Calendar1 = Date
Me.Left = ActiveCell.Offset(0, 1).Left - Windows(1).VisibleRange.Left + 25
Me.Top = ActiveCell.Offset(0, 1).Top - Windows(1).VisibleRange.Top + 100
End Sub
Fichier (2 bis).

A+
 

Pièces jointes

Re : Deux Macro identiques sur deux colonnes voisines: possible ?

Bonjour,

Merci énormément job75.

Cela semble parfaitement fonctionner.

Je ne comprend pas trop pourquoi auparavant ce n'était pas le cas (l'impossibilité d'afficher le calendrier en dehors de la page de visualisation alors même qu'en faisant défiler celle-ci le calendrier a toujours vocation à être positionné sur l'écran ?).

Mais, encore une fois, merci à toi et merci à ce Forum d'exister pour sauver la mise de gens comme moi (du coup je vais essayer de regarder le VBA d'un peu plus près).

A+
 
Re : Deux Macro identiques sur deux colonnes voisines: possible ?

Bonjour Fluffy, le forum,

Cette macro tient compte d'un éventuel fractionnement de la fenêtre :

Code:
Private Sub UserForm_Initialize()
Dim n As Byte, H#, W#
Calendar1 = Date
Application.WindowState = xlMaximized
Windows(1).WindowState = xlMaximized
n = Windows(1).Panes.Count 'nombre de volets
With Windows(1).Panes(1).VisibleRange
  If n > 1 Then H = .Height
  If n > 2 Then W = .Width
End With
With Windows(1).Panes(n).VisibleRange
  Me.Top = H + ActiveCell.Offset(, 1).Top - .Top + 100
  Me.Left = W + ActiveCell.Offset(, 1).Left - .Left + 25
End With
End Sub
Fichier (2 ter).

A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
645
Réponses
7
Affichages
829
Réponses
7
Affichages
1 K
Réponses
3
Affichages
1 K
Z
Réponses
3
Affichages
1 K
Z
Réponses
27
Affichages
2 K
Retour