Erreur à l'ouverture fichier source quand fichier cible déjà ouvert.

webmuster

XLDnaute Junior
Bonjour à toutes et à tous

J'ai un fichier de données, avec des macros évènementielles, qui s'alimente grâce à des formules de rechercheV depuis un autre fichier source, dans un autre répertoire.

Lorsque j'ouvre le fichier source, et que le fichier cible est déjà ouvert, j'obtiens un message d'erreur d’exécution '1004' de Microsoft Visual Basic: "L'élément portant ce nom est introuvable."
Quand je clique sur "débogage", l'élément pointé en jaune est : ActiveSheet.Shapes.Range(Array("Wave 3")).Select

A contrario, si j'ouvre le fichier source en premier: aucun bug !

Pouvez-vous m'éclairer ?

Je vous joins un extrait du code que j'utilise (grâce à vous d'ailleurs).

Code:
Private Sub Worksheet_Calculate()
 Dim Coul()
  Coul = Array(RGB(0, 102, 0), RGB(255, 192, 0), RGB(255, 0, 0))
  ActiveSheet.Shapes.Range(Array("Wave 3")).Select
  With Selection.ShapeRange.Fill
    .ForeColor.RGB = Coul([H14] - 1)
  End With
      
ActiveSheet.Shapes.Range(Array("Wave 5")).Select
  With Selection.ShapeRange.Fill
    .ForeColor.RGB = Coul([J14] - 1)
  End With
            
ActiveSheet.Shapes.Range(Array("Wave 7")).Select
  With Selection.ShapeRange.Fill
    .ForeColor.RGB = Coul([D14] - 1)
  End With
ActiveSheet.Shapes.Range(Array("Wave 8")).Select
  With Selection.ShapeRange.Fill
    .ForeColor.RGB = Coul([F14] - 1)
  End With
            
ActiveSheet.Shapes.Range(Array("Wave 11")).Select
  With Selection.ShapeRange.Fill
    .ForeColor.RGB = Coul([B14] - 1)
  End With
  

  [N17].Font.color = Coul([H14] - 1)
  [S17].Font.color = Coul([J14] - 1)
  [N31].Font.color = Coul([D14] - 1)
  [S31].Font.color = Coul([F14] - 1)
  [O43].Font.color = Coul([B14] - 1)


    [A3].Select
End Sub

Cordialement
 

job75

XLDnaute Barbatruc
Re : Erreur à l'ouverture fichier source quand fichier cible déjà ouvert.

Bonjour webmuster,

Vous ne devriez plus avoir de problème avec ce code :

Code:
Private Sub Worksheet_Calculate()
Dim Coul()
ThisWorkbook.Activate
Me.Activate
'---ici la suite de votre code---
End Sub
Nota : remplacez partout ActiveSheet par Me, c'est plus simple.

A+
 

job75

XLDnaute Barbatruc
Re : Erreur à l'ouverture fichier source quand fichier cible déjà ouvert.

Re,

Si l'on veut peaufiner, il est peut-être mieux d'utiliser :

Code:
Private Sub Worksheet_Calculate()
Dim Wb As Workbook, F As Object, Coul()
Set Wb = ActiveWorkbook
Set F = ActiveSheet
Application.ScreenUpdating = False
ThisWorkbook.Activate
Me.Activate
'---ici la suite de votre code---
Wb.Activate
F.Activate
End Sub
A+
 

job75

XLDnaute Barbatruc
Re : Erreur à l'ouverture fichier source quand fichier cible déjà ouvert.

Re,

Cela dit celui qui vous a donné ce code aurait dû savoir qu'en VBA il est presque toujours inutile - voire néfaste comme ici - de sélectionner.

Ce code est simple et fonctionnera toujours car il ne sélectionne rien :

Code:
Private Sub Worksheet_Calculate()
Dim Coul()
Coul = Array(RGB(0, 102, 0), RGB(255, 192, 0), RGB(255, 0, 0))
Me.Shapes("Wave 3").Fill.ForeColor.RGB = Coul([H14] - 1)
Me.Shapes("Wave 5").Fill.ForeColor.RGB = Coul([J14] - 1)
Me.Shapes("Wave 7").Fill.ForeColor.RGB = Coul([D14] - 1)
Me.Shapes("Wave 8").Fill.ForeColor.RGB = Coul([F14] - 1)
Me.Shapes("Wave 11").Fill.ForeColor.RGB = Coul([B14] - 1)
[N17].Font.Color = Coul([H14] - 1)
[S17].Font.Color = Coul([J14] - 1)
[N31].Font.Color = Coul([D14] - 1)
[S31].Font.Color = Coul([F14] - 1)
[O43].Font.Color = Coul([B14] - 1)
End Sub
Nota : pour que la macro ne beugue pas il faut bien sûr en plus :

- que les 5 Shapes existent (avec le nom correct)

- que chaque cellule H14 J14 D14 F14 B14 contienne l'une des valeurs 1, 2 ou 3.

A+
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote