Problème Worksheet_Activate

Bonjour, j'ai un petit soucis dû à un Worksheet_Activate:

Lorsque je lance cette macro

Dim derligne As Integer

Set fp = Sheets("Planning")
Set fr = Sheets("Renseignement")
Set fa = Sheets("AJOUTER")

derligne = Sheets("Renseignement").Range("A" & Rows.Count).End(xlUp).Row + 1

If Range("G7").Value > 0 And Range("G8").Value > 0 Then
    fa.Range("A2:N2").Copy
    fr.Range("A" & derligne).PasteSpecial xlPasteValues

    fa.Range("G7:G19").ClearContents

    fr.Range("W3:W" & derligne).Copy
    fp.Range("B12").PasteSpecial xlPasteValues
End If

Set fp = Nothing
Set fr = Nothing
Set fa = Nothing

End Sub

j'ai ce problème qui apparaît lors de l'activation de ma feuille ("Planning")

Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
Range("A1").Value = 0
ActiveSheet.Shapes("rectangle 9").Visible = False
ActiveSheet.Shapes("rectangle 35").Visible = False
ActiveSheet.Shapes("rectangle 42").Visible = False
ActiveSheet.Shapes("rectangle 43").Visible = False
Application.ScreenUpdating = True
End Sub

Auriez-vous une solution? Merci.

bonjor

quel soucis ?

Désolé, un problème avec les Activesheet.shapes

erreur1 erreur2

bonjour

vous n avez pas un rectangle nomé rectangle 9

Bonjour AMIR,

Oui j'ai effectivement un "rectangle 9" , pourquoi ?

sur

ta feuille ("Planning")

essayer ca pour recuperer les noms des rectangles

 Private Sub Worksheet_Activate()
    Dim shp
    Application.ScreenUpdating = False
   Range("A1").Value = 0
   For Each shp In ActiveSheet.Shapes
   MsgBox shp.Name
   Next
   Application.ScreenUpdating = True
    End Sub

Oui sur ma feuille ("Planning")

essayer ca pour recuperer les noms des rectangles

Private Sub Worksheet_Activate()
        Dim shp
        Application.ScreenUpdating = False
       Range("A1").Value = 0
       For Each shp In ActiveSheet.Shapes
       MsgBox shp.Name
       Next
       Application.ScreenUpdating = True
        End Sub

J'ai essayé, ça me donne le nom de mes rectangle, mais je vois pas où tu veux en venir.

Bonjour,

Salut Amir !

Remplace ActiveSheet par Me.

alors vous avez trouvé "rectangle 9", "rectangle 35","rectangle 42" et "rectangle 43" sans moindre déferenre (espace, majuscules,........)

si non tu peux essayer

Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
Range("A1").Value = 0
' ActiveSheet.Shapes("rectangle 9").Visible = False
 ActiveSheet.Shapes("rectangle 35").Visible = False
 ActiveSheet.Shapes("rectangle 42").Visible = False
 ActiveSheet.Shapes("rectangle 43").Visible = False
 Application.ScreenUpdating = True
    End Sub
Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
Range("A1").Value = 0
' ActiveSheet.Shapes("rectangle 9").Visible = False
 ' ActiveSheet.Shapes("rectangle 35").Visible = False
 ActiveSheet.Shapes("rectangle 42").Visible = False
 ActiveSheet.Shapes("rectangle 43").Visible = False
 Application.ScreenUpdating = True
    End Sub
Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
Range("A1").Value = 0
' ActiveSheet.Shapes("rectangle 9").Visible = False
' ActiveSheet.Shapes("rectangle 35").Visible = False
' ActiveSheet.Shapes("rectangle 42").Visible = False
 ActiveSheet.Shapes("rectangle 43").Visible = False
 Application.ScreenUpdating = True
    End Sub
Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
Range("A1").Value = 0
' ActiveSheet.Shapes("rectangle 9").Visible = False
' ActiveSheet.Shapes("rectangle 35").Visible = False
' ActiveSheet.Shapes("rectangle 42").Visible = False
 ' ActiveSheet.Shapes("rectangle 43").Visible = False
 Application.ScreenUpdating = True
    End Sub

AMIR, le problème ne venait pas du nom des rectangles mais du nom de la feuille, il suffisait de changer le "Activesheet" par "Sheets("Planning") ou comme à dit MFerrand : Me . Merci pour le temps que tu m'as accordé.

bonsoir

Salut MFerrand , tu peux me dire pourquoi je ne comprends pas et surtout ca a marche avec le code

AMIR a écrit :

essayer ca pour recuperer les noms des rectangles

Private Sub Worksheet_Activate()
        Dim shp
        Application.ScreenUpdating = False
       Range("A1").Value = 0
       For Each shp In ActiveSheet.Shapes
       MsgBox shp.Name
       Next
       Application.ScreenUpdating = True
        End Sub
Benoist28200 a écrit :

J'ai essayé, ça me donne le nom de mes rectangle, mais je vois pas où tu veux en venir.

Bonsoir AMIR, je n'ai jamais dis que tu ne comprenais pas, je t'ai juste demandé où tu voulais en venir avec le nom des rectangles parce que je savais déjà que le problème ne venait pas de là. En fait le problème venait du nom de l'activation de la feuille, il fallait remplacer ActiveSheet.Shapes par Sheets("Planning").Shapes.

Merci d'avoir pris le temps de m'aider,

Cordialement

Benoist

oups ,je suis désolé c etait une erreur de syntaxe

bonsoir

Salut MFerrand , tu peux me dire pourquoi ? Je ne comprends pas et surtout ca a marche avec le code

AMIR a écrit :

essayer ca pour recuperer les noms des rectangles

Private Sub Worksheet_Activate()
        Dim shp
        Application.ScreenUpdating = False
       Range("A1").Value = 0
       For Each shp In ActiveSheet.Shapes
       MsgBox shp.Name
       Next
       Application.ScreenUpdating = True
        End Sub
Benoist28200 a écrit :

J'ai essayé, ça me donne le nom de mes rectangle, mais je vois pas où tu veux en venir.

Sincèrement je savoir pourquoi ca marche avec "Me"

" Me " prend le nom de la feuille active, donc pour mon cas " Sheets("Planning") ".

Bonsoir Amir,

Logiquement, l'erreur rencontrée avait toutes chances de se produire sur un problème dans le nom de l'objet Shape, une faute de frappe ou une espace en trop ou en moins, en principe pas sur majuscules/minuscules (mais... ?). Ton test était donc parfaitement légitime et je ne suis pas intervenu tant que l'intéressé n'avait pas testé...

L'erreur se produit aussi systématiquement si Shapes n'est pas qualifiée : l'objet n'est pas cherché par défaut dans la feuille active, il faut la lui indiquer. Mais ce n'était pas le cas ici.

En changeant ActiveSheet par Me ou le nom de la feuille, on ne change rien en principe... mais il peut suffire d'un tel changement pour que ça marche. J'ai déjà eu ce genre d'erreur (particulièrement énervante, parce que tu fais des tests parallèles qui fonctionnent et tu as toujours l'erreur dans la procédure...). J'en ai même eu une sur une .Shapes... incluse dans un With... End With qui plantait, et qui fonctionnait normalement en remontant la commande plus près du With.

Il faudrait scruter le classeur pour voir si on trouve une explication logique, mais pas sûr. J'ai l'impression que parfois soit Excel, soit VBA (je ne sais lequel des deux) perd le fil... Il y a sans doute un élément déclencheur de l'erreur dans le contexte d'exécution mais qui ne se situe pas au niveau des éléments visibles (et nous ne sommes pas en mesure d'aller voir dans le code des applications, la mémoire, voire le système, ce qui peut perturber).

Avec l'expérience, on ne s'étonne plus trop d'aboutir à une solution de façon illogique, mais quand on n'a pas de raison logique de l'erreur...

Bonne fin de soirée et bon dimanche.

Bonsoir AMIR, bonsoir MFerrand,

Après réflexion je ne pense pas que ce soit un bug du vba, étant sur la feuille ("AJOUTER") et demandant via macro de copier des valeurs dans différentes cellules de ma feuille "Planning" sans activer celle ci , la feuille active reste "AJOUTER" où les "shapes" n’existent pas , d'où l'erreur. En attribuant à ma "Shapes" le nom "réel" de ma feuille, vba sait sur quelle feuille il doit rendre (visible ou invisible) les "Shapes".

Bon week-end à vous.

Amicalement

Benoist

Chez nous ils disent : qui te dépasse par une nuit il te dépasse par une astuce (ou une chose semblable). Alors si par expérience MFerrand a raison surtout que je t ai demande

AMIR a écrit :

sur

ta feuille ("Planning")

essayer ca pour recuperer les noms des rectangles

 Private Sub Worksheet_Activate()
    Dim shp
    Application.ScreenUpdating = False
   Range("A1").Value = 0
   For Each shp In ActiveSheet.Shapes
   MsgBox shp.Name
   Next
   Application.ScreenUpdating = True
    End Sub
Benoist28200 a écrit :

Oui sur ma feuille ("Planning")

Benoist28200 a écrit :

J'ai essayé, ça me donne le nom de mes rectangle, mais je vois pas où tu veux en venir.

Et cette dernière réponse veut dire que les rectangles se trouvent sur ta feuille ("Planning")

Benoist28200 a écrit :

J'ai essayé, ça me donne le nom de mes rectangle, mais je vois pas où tu veux en venir.

celle veut dire que l événement Worksheet_Activate est sur la feuille "Planning"

Benoist28200 a écrit :

j'ai ce problème qui apparaît lors de l'activation de ma feuille ("Planning")

Benoist28200 a écrit :

j'ai ce problème qui apparaît lors de l'activation de ma feuille ("Planning")

Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
Range("A1").Value = 0
ActiveSheet.Shapes("rectangle 9").Visible = False
ActiveSheet.Shapes("rectangle 35").Visible = False
ActiveSheet.Shapes("rectangle 42").Visible = False
ActiveSheet.Shapes("rectangle 43").Visible = False
Application.ScreenUpdating = True
End Sub

si ja ai bien compris

et la vous dite :

Benoist28200 a écrit :

J'ai essayé, ça me donne le nom de mes rectangle, mais je vois pas où tu veux en venir.

Benoist28200 a écrit :

la feuille active reste "AJOUTER" où les "shapes" n’existent pas , d'où l'erreur.

Rechercher des sujets similaires à "probleme worksheet activate"