Macro qui fonctionne sur une feuille mais plus sur la copie de la feuille ?

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

anthony_unac

XLDnaute Junior
Bonjour,

Voici un cas plutôt curieux ou j'ai une macro qui fonctionne très bien sur la feuille d'origine mais plus sur la copie de cette dernière.

Voici une partie de la macro :
**********************

Code:
Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet

'si l'adresse de la cellule où a lieu le changement est différente de D6, sort de la procédure
If Target.Address <> "$D$6" Then Exit Sub

'si D6 est effacée, efface aussi G6 et H6
If Target.Value = "" Then
      [G6] = ""
      [H6] = ""
      Exit Sub
End If
    
's'il existe au moins une occurrence de D6 dans la colonne U, lance la macro
If Not Columns(21).Find(Target.Value, , xlValues, xlWhole) Is Nothing Then
      [G6] = "PRODUIT TECHNIQUE"
      [H6] = "SAV"
End If

's'il existe au moins une occurrence de D6 dans la colonne V, lance la macro
If Not Columns(22).Find(Target.Value, , xlValues, xlWhole) Is Nothing Then
      [G6] = "PRODUIT EDITORIAUX"
      [H6] = "DISQUE"
End If

's'il existe au moins une occurrence de D6 dans la colonne W, lance la macro
If Not Columns(23).Find(Target.Value, , xlValues, xlWhole) Is Nothing Then
      [G6] = "PRODUIT EDITORIAUX"
      [H6] = "LIVRE"
End If

's'il existe au moins une occurrence de D6 dans la colonne X, lance la macro
If Not Columns(24).Find(Target.Value, , xlValues, xlWhole) Is Nothing Then
      [G6] = "PRODUIT ADMINISTRATIF"
      [H6] = "ADMINISTRATION"
End If

's'il existe au moins une occurrence de D6 dans la colonne Y, lance la macro
If Not Columns(25).Find(Target.Value, , xlValues, xlWhole) Is Nothing Then
      [G6] = "PRODUIT CAISSE"
      [H6] = "CAISSE"
End If

'si l'adresse de la cellule où a lieu le changement est différente de D7, sort de la procédure
If Target.Address <> "$D$7" Then Exit Sub

'si D7 est effacée, efface aussi G7 et H7
If Target.Value = "" Then
      [G7] = ""
      [H7] = ""
      Exit Sub
End If
    
's'il existe au moins une occurrence de D7 dans la colonne U, lance la macro
If Not Columns(21).Find(Target.Value, , xlValues, xlWhole) Is Nothing Then
      [G7] = "PRODUIT TECHNIQUE"
      [H7] = "SAV"
End If

's'il existe au moins une occurrence de D7 dans la colonne V, lance la macro
If Not Columns(22).Find(Target.Value, , xlValues, xlWhole) Is Nothing Then
      [G7] = "PRODUIT EDITORIAUX"
      [H7] = "DISQUE"
End If

's'il existe au moins une occurrence de D7 dans la colonne W, lance la macro
If Not Columns(23).Find(Target.Value, , xlValues, xlWhole) Is Nothing Then
      [G7] = "PRODUIT EDITORIAUX"
      [H7] = "LIVRE"
End If

's'il existe au moins une occurrence de D7 dans la colonne X, lance la macro
If Not Columns(24).Find(Target.Value, , xlValues, xlWhole) Is Nothing Then
      [G7] = "PRODUIT ADMINISTRATIF"
      [H7] = "ADMINISTRATION"
End If

's'il existe au moins une occurrence de D7 dans la colonne Y, lance la macro
If Not Columns(25).Find(Target.Value, , xlValues, xlWhole) Is Nothing Then
      [G7] = "PRODUIT CAISSE"
      [H7] = "CAISSE"
End If

' etc...

End Sub

Quand à la macro (présente dans le workbook) permettant la copie, elle se présente sous cette forme :

Code:
Sub Nouveau()

nom = Range("R4").Value

ActiveSheet.Copy after:=Worksheets(ThisWorkbook.Worksheets.Count)

With ActiveSheet
    .Name = nom

    .Range("C6:C31").ClearContents
    .Range("D6:D31").ClearContents
    .Range("E6:E31").ClearContents
    .Range("J6:J31").ClearContents
    .Range("K6:K31").ClearContents
    .Range("G6:G30").ClearContents
    .Range("H6:H30").ClearContents
    
End With

End Sub

Pourquoi ça ne marche pas ?😕

Cordialement
Anthony
 
Re : Macro qui fonctionne sur une feuille mais plus sur la copie de la feuille ?

Bonsoir

Parce que le code qui s'applique à une feuille (la jalouse) ne s'applique qu' a elle et a elle seule pour le meilleur et pour le pire.
Private Sub Worksheet_Change
(sauf en en cas de polygamie macrotique)

PS: tu peux réduire ton ClearContents à une seule ligne (en passant par une seule plage)
 
Dernière édition:
Re : Macro qui fonctionne sur une feuille mais plus sur la copie de la feuille ?

Bonsoir

Parce que le code qui s'applique à une feuille (la jalouse) ne s'applique qu' a elle et a elle seule pour le meilleur et pour le pire.

Ok mais le fait est que le code de la feuille copiée est le même que celui de l'originale d ou l'incompréhension 😕

Cordialement
Anthony
 
Re : Macro qui fonctionne sur une feuille mais plus sur la copie de la feuille ?

Je crois qu'il faut manipuler le fichier pour bien comprendre, c'est pourquoi je vous le propose sur le lien suivant : - Casimages.com -

Lorsque vous ouvrez le fichier une feuille à la date d'aujourd hui se créée vous sélectionner alors un transporteur en C puis un expéditeur en D vous enregistrez

Vous changez la date de votre PC mettons le lendemain et vous rouvrez le fichier alors une nouvelle feuille avec la date d'aujourd hui se créée mais la le choix de l'expéditeur n'entraine plus le remplissage auto des autres champs.

Que faire pour corriger cela ?

Cordialement
Anthony
 
Dernière édition:
Re : Macro qui fonctionne sur une feuille mais plus sur la copie de la feuille ?

Bonjour


tu n'es pas obligé de joindre ton fichier original
(une version allégée et simplifiée suffit)
Pas de mise en forme, pas d'images, pas de bordures, quelques lignes)

et ton fichier sera < à 48ko et tu pourras le joindre directement sur XLD.
 
Re : Macro qui fonctionne sur une feuille mais plus sur la copie de la feuille ?

Bonjour Stapple1600, anthony_unac, le forum

si j'ai bien compris ta demande, c'est un problème dans ta macro

dans ta procédure nouveau, tu effaces le contenu des cellules dont tu parles et donc les formules. Enlèves le clearcontents des G6:G30 et H6:H30 et cela ira mieux

Cordialement
 
Re : Macro qui fonctionne sur une feuille mais plus sur la copie de la feuille ?

Bonjour Stapple1600, anthony_unac, le forum

si j'ai bien compris ta demande, c'est un problème dans ta macro

dans ta procédure nouveau, tu effaces le contenu des cellules dont tu parles et donc les formules. Enlèves le clearcontents des G6:G30 et H6:H30 et cela ira mieux

Cordialement

Bonjour

Merci pour cette réponse mais en fait il n'y a pas de formules dans les G et H, ce sont des champs qui se remplissent automatiquement à l'aide d'une macro (mais pas de formule matricielle) donc on peut les "clearer"

Cordialement
Anthony
 
Re : Macro qui fonctionne sur une feuille mais plus sur la copie de la feuille ?

Re

Je viens de tester à nouveau sous Excel 2000 et tout est OK
La modif apportée est la suivante:

Ajout de :
Code:
Sheets(Sheets.Count).Select
en tete de Workbook_open
En effet si on ouvre sur une autre feuille qu'une feuille datée, [R3] peut etre n'importe quoi
 
Re : Macro qui fonctionne sur une feuille mais plus sur la copie de la feuille ?

Bonjour,

En fait le soucis ne portait pas sur la création de la nouvelle feuille à la date du jour (qui fonctionne très bien) mais sur le remplissage auto des cellules G_i et H_i à l'aide d'une macro.

Cordialement
Anthony
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Retour