Deux Macro identiques sur deux colonnes voisines: possible ?

Fluffy

XLDnaute Nouveau
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:rolleyes:

Merci à vous
 

Pièces jointes

  • fluffy ter macro.xlsm
    27.9 KB · Affichages: 37
  • fluffy ter macro.xlsm
    27.9 KB · Affichages: 41
  • fluffy ter macro.xlsm
    27.9 KB · Affichages: 46

job75

XLDnaute Barbatruc
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+
 

Fluffy

XLDnaute Nouveau
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

  • Classeur Le Bon 05.06.12.xlsx
    217.2 KB · Affichages: 35

Grand Chaman Excel

XLDnaute Impliqué
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+
 

Fluffy

XLDnaute Nouveau
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 :confused:

Bien à vous.
 

CISCO

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

Bonsoir

la proposition de Grand Chaman Excel fait ce que tu demandes, il me semble.

@ plus
 

Pièces jointes

  • fluffy ter macro suite.xlsm
    34.7 KB · Affichages: 42

job75

XLDnaute Barbatruc
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

  • Classeur Le Bon 05.06.12(1).xls
    495.5 KB · Affichages: 29

job75

XLDnaute Barbatruc
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

  • Classeur Le Bon 05.06.12(2).xls
    497.5 KB · Affichages: 37

Fluffy

XLDnaute Nouveau
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
 

job75

XLDnaute Barbatruc
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

  • Classeur Le Bon 05.06.12(3).xls
    497.5 KB · Affichages: 28
  • Classeur Le Bon 05.06.12(3).xls
    497.5 KB · Affichages: 26
  • Classeur Le Bon 05.06.12(3).xls
    497.5 KB · Affichages: 26

job75

XLDnaute Barbatruc
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

  • Classeur Le Bon 05.06.12(3).xls
    504.5 KB · Affichages: 24
  • Classeur Le Bon 05.06.12(3).xls
    504.5 KB · Affichages: 27
  • Classeur Le Bon 05.06.12(3).xls
    504.5 KB · Affichages: 27
Dernière édition:

job75

XLDnaute Barbatruc
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

  • Classeur Le Bon 05.06.12(2 bis).xls
    498.5 KB · Affichages: 24

Fluffy

XLDnaute Nouveau
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+
 

job75

XLDnaute Barbatruc
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

  • Classeur Le Bon 05.06.12(2 ter).xls
    499.5 KB · Affichages: 26

Discussions similaires

Réponses
7
Affichages
584

Statistiques des forums

Discussions
312 505
Messages
2 089 101
Membres
104 031
dernier inscrit
RimeF