Bud.boundy
XLDnaute Occasionnel
Bonjour, j'aimerais cumulé 2 macros à l'interieur d'une même feuille d'un même classeur. Ces deux macros marchent parfaitement mais dès qu'elles sont associées, cela bug puisque la déclaration semble être identique...
Quelqu'un pourraît simplement m'aider à changer la amnière de déclarer (j'y connais rien) ou l'intégrer dans un module... bref, à vous de voir ce qui est mieux pour moi...
MERCI POUR VOTRE AIDE
A BIENTOT
VOICI LA 1ERE MACRO :
Private Sub Worksheet_Change(ByVal Target As Range)
' Activé au changement de sélection de cellule seulement en colonne 1 et 2 et en dessous de la ligne 13
With ActiveCell.Validation
On Error Resume Next
If .InCellDropdown = True Then
Select Case .Formula1
Case "=SousMatière"
If WorksheetFunction.CountIf(Worksheets("Base").Range("Matière"), Target) = 1 Then
SendKeys "%{DOWN}"
End If
Case "=Solution"
If WorksheetFunction.CountIf(Worksheets("Base").Range("$J$1:$AV$8"), Target) = 0 Then
SendKeys "%{DOWN}"
End If
End Select
End If
End With
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' Activé au changement de sélection de cellule seulement en colonne 1 et 2 et en dessous de la ligne 13
With ActiveCell.Validation
On Error Resume Next
If .InCellDropdown = True Then
Select Case .Formula1
Case "=SousMatière"
If WorksheetFunction.CountIf(Worksheets("Base").Range("Matière"), Target) = 0 Then
SendKeys "%{DOWN}"
End If
Case "=Solution"
If WorksheetFunction.CountIf(Worksheets("Base").Range("$J$1:$AV$8"), Target) = 0 Then
SendKeys "%{DOWN}"
End If
End Select
End If
End With
End Sub
VOICI LA 2EME MACRO :
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Val As String
Dim MyCell As Range
Dim MyPicture As Picture
Dim Pict
Dim a As Long
On Error GoTo errorhandler
Application.ScreenUpdating = False
Val = Target.Value
With Application.FileSearch
.NewSearch
.Filename = ".jpg"
.LookIn = ThisWorkbook.Path
.SearchSubFolders = False
.Execute msoSortByFileName, msoSortOrderAscending
If .Execute > 0 Then
Set MyCell = Target.Offset(1, 0)
MyCell.Select
For Each Pict In ActiveSheet.DrawingObjects ' supprimer ancienne image dans cellule
If Pict.Left = MyCell.Left + (MyCell.Width - 50) / 2 And Pict.Top = MyCell.Top + (MyCell.Height - 50) / 2 Then Pict.Delete
Next
Set MyPicture = ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\" & Val & ".jpg")
With MyPicture.ShapeRange
.LockAspectRatio = msoFalse
.Height = 55
.Width = 55
.Top = MyCell.Top + (MyCell.Height - 50) / 2
.Left = MyCell.Left + (MyCell.Width - 50) / 2
End With
MyCell.Select
MsgBox Pict.Left
End If
End With
Application.ScreenUpdating = True
Exit Sub
errorhandler:
Application.ScreenUpdating = True
Exit Sub
End Sub
Quelqu'un pourraît simplement m'aider à changer la amnière de déclarer (j'y connais rien) ou l'intégrer dans un module... bref, à vous de voir ce qui est mieux pour moi...
MERCI POUR VOTRE AIDE
A BIENTOT
VOICI LA 1ERE MACRO :
Private Sub Worksheet_Change(ByVal Target As Range)
' Activé au changement de sélection de cellule seulement en colonne 1 et 2 et en dessous de la ligne 13
With ActiveCell.Validation
On Error Resume Next
If .InCellDropdown = True Then
Select Case .Formula1
Case "=SousMatière"
If WorksheetFunction.CountIf(Worksheets("Base").Range("Matière"), Target) = 1 Then
SendKeys "%{DOWN}"
End If
Case "=Solution"
If WorksheetFunction.CountIf(Worksheets("Base").Range("$J$1:$AV$8"), Target) = 0 Then
SendKeys "%{DOWN}"
End If
End Select
End If
End With
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' Activé au changement de sélection de cellule seulement en colonne 1 et 2 et en dessous de la ligne 13
With ActiveCell.Validation
On Error Resume Next
If .InCellDropdown = True Then
Select Case .Formula1
Case "=SousMatière"
If WorksheetFunction.CountIf(Worksheets("Base").Range("Matière"), Target) = 0 Then
SendKeys "%{DOWN}"
End If
Case "=Solution"
If WorksheetFunction.CountIf(Worksheets("Base").Range("$J$1:$AV$8"), Target) = 0 Then
SendKeys "%{DOWN}"
End If
End Select
End If
End With
End Sub
VOICI LA 2EME MACRO :
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Val As String
Dim MyCell As Range
Dim MyPicture As Picture
Dim Pict
Dim a As Long
On Error GoTo errorhandler
Application.ScreenUpdating = False
Val = Target.Value
With Application.FileSearch
.NewSearch
.Filename = ".jpg"
.LookIn = ThisWorkbook.Path
.SearchSubFolders = False
.Execute msoSortByFileName, msoSortOrderAscending
If .Execute > 0 Then
Set MyCell = Target.Offset(1, 0)
MyCell.Select
For Each Pict In ActiveSheet.DrawingObjects ' supprimer ancienne image dans cellule
If Pict.Left = MyCell.Left + (MyCell.Width - 50) / 2 And Pict.Top = MyCell.Top + (MyCell.Height - 50) / 2 Then Pict.Delete
Next
Set MyPicture = ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\" & Val & ".jpg")
With MyPicture.ShapeRange
.LockAspectRatio = msoFalse
.Height = 55
.Width = 55
.Top = MyCell.Top + (MyCell.Height - 50) / 2
.Left = MyCell.Left + (MyCell.Width - 50) / 2
End With
MyCell.Select
MsgBox Pict.Left
End If
End With
Application.ScreenUpdating = True
Exit Sub
errorhandler:
Application.ScreenUpdating = True
Exit Sub
End Sub