Problème de macro dans une procedure double click sur une cellule
Bonjour,
Vous m'avez déjà bien aidé pour avancer dans ce projet, Merci.
Je vous sollicite encore pour un autre problème
Deux feuilles : une feuille CALENDRIER, une feuille VUE
En double cliquant sur une cellule de la VUE, je veux modifier des cellules du CALENDRIER
La macro se déclenche mais une erreur survient à la ligne 34
34 Cells(iLignesh, iMed1).Select Je ne comprends pas pourquoi ?
Pouvez-vous m'aiguiller vers la solution ?
En vous remerciant par anticipation
VOCI LE CODE INSCRIT DANS LA FEUILLE VUE
01 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
02 Dim iLignesh As Integer
03 Dim sMed1Nom As String
04 Dim iMed1 As Integer
05 Dim sCode1 As String
06 Dim scodeTransit1 As String
07 Dim sMed2Nom As String
08 Dim iMed2 As Integer
09 Dim sCode2 As String
10 Dim scodeTransit2 As String
11 '---------------------------------
12 If Not Application.Intersect(Target, Range("B7:BR37")) Is Nothing Then
13 'Target.Offset(0, 0).Select
14 'Message d'initialisation
15 MsgBox " Un message va vous demander si ce que vous voulez faire : " & Chr(13) & " Voulez-vous INVERSER le Médecin 1 par le Médecin 2 " & Chr(13) & " Voulez-vous INVERSER le Médecin 2 par le Médecin 1 " & Chr(13) & " Voulez-vous Simplement remplacer le Médecin 1 " & Chr(13) & " Voulez-vous Simplement remplacer le Médecin 2 "
16 'Input les variables
17 'reprise du N° du membre repris dans la cellule de choix en feuille Vue (+4 colonnes d'entête du calendrier)
18 iMed1 = Range("B1").Value + 4
19 'reprise du Non du membre repris dans la cellule de choix en feuille Vue
20 sMed1Nom = Range("F1").Value
21 'idem pour le 2ème Membre
22 iMed2 = Range("B3").Value + 4
23 sMed2Nom = Range("F3").Value
24 'Indication de controle dans la feuille vue
25 Range("B4").Value = Target.Value
26 'Valeur de la ligne calendrier reprise sur la cellule double cliquée (+9 ligne d'entête du calendrier)
27 iLignesh = Target.Value + 9
28 'Message avec choix
29 Dim Rep As String
30 Rep = MsgBox("Voulez-vous INVERSER, " & Chr(13) & Chr(13) & "le Docteur : " & sMed1Nom & Chr(13) & Chr(13) & " par " & Chr(13) & Chr(13) & " le Docteur : " & sMed2Nom & Chr(13) & Chr(13) & Chr(13) & Chr(13) & "SI VOULEZ L'INVERSE TAPEZ NON ", vbYesNo + vbQuestion, "SENS du MED1 vers le Med2 ")
31 if rep = vbYes Then
32 'REMPLACEMENT
33 Sheets("T_Cal_Annuel").Select
34 Cells(iLignesh, iMed1).Select ' VOILA LA LIGNE OU L'ERREUR SE PROPDUIT
sCode1 = Cells(iLignesh, iMed1).Value
scodeTransit1 = sCode1
Cells(iLignesh, iMed2).Select
sCode2 = Cells(iLignesh, iMed2).Value
scodeTransit2 = sCode2
'Inversion des codes
Cells(iLignesh, iMed2).Value = scodeTransit1
Cells(iLignesh, iMed1).Value = scodeTransit2
'Messgae de confirmation
Rep = MsgBox("le Docteur : " & sMed1Nom & Chr(13) & Chr(13) & " a été remplacé par " & Chr(13) & Chr(13) & " le Docteur : " & sMed2Nom & Chr(13) & Chr(13) & Chr(13) & Chr(13) & "ET INVERSEMENT ", vbYesNo + vbQuestion, "SENS du MED1 vers le Med2 ")
Sheets("T_Vue").Select
Else
' Rep = MsgBox("Dans ce cas, Voulez-vous DONC INVERSER, " & Chr(13) & Chr(13) & "le Docteur : " & sMed2Nom & Chr(13) & Chr(13) & " par " & Chr(13) & Chr(13) & " le Docteur : " & sMed2Nom & Chr(13) & Chr(13) & Chr(13) & Chr(13) & "", vbYesNo + vbQuestion, "SENS du MED1 vers le Med2 ")
'A FAIRE sur base du choix OUI
End If
End If
End SubBonsoir,
il n'est pas utile de sélectionner une feuille pour y faire des choses.
Le Sheets("T_Cal_Annuel").Select est peut-être de trop.
Essayez ceci : sCode1 = Sheets("T_Cal_Annuel").(iLignesh, iMed1).Value
Et le reste à modifier de la même manière.
@ bientôt
LouReeD
Bonsoir et merci pour cette réponse rapide,
cela fonctionne, et en sus je n'ai plus l'éclat du passage d'une feuille à l'autre.
En fait je développe un programme pour la gestion des gardes de notre groupe de médecins généralistes.
Programmer en excel est devenu un hobby. Je me débrouille mais j'apprends chaque fois par des conseils avisés, dont je vous remercie.
Si vous le désirez je peux vous envoyer le programme afin d'y jeter un oeil avisé et TRES critique.
Bien à vous et encore merci.
GD