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

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 ?:confused:

Cordialement
Anthony
 

Staple1600

XLDnaute Barbatruc
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:

anthony_unac

XLDnaute Junior
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:

Staple1600

XLDnaute Barbatruc
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.
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
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
 

anthony_unac

XLDnaute Junior
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
 

pierrejean

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

Bonjour a tous

Chez moi c'est workbook_open qui ne fonctionnait pas

Vois si cette version va mieux
 

Pièces jointes

  • Colis Réceptionnés V 2.0.zip
    210.8 KB · Affichages: 28

pierrejean

XLDnaute Barbatruc
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
 

anthony_unac

XLDnaute Junior
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
 

Discussions similaires

Réponses
2
Affichages
153

Statistiques des forums

Discussions
312 243
Messages
2 086 550
Membres
103 245
dernier inscrit
gdesign