J'aurais besoin d'aide pour me faire une macro qui recherche les doublons de la colonne G dans l'onglet X3 et les insérer dans l'onglet Synthese en dessous de chaque référence en doublon et en ne conservant que certaines informations. Le plus simple est de joindre le fichier origine 60 et ce que je veux 61.
J'ai trouvé.
Quand vous lancé "reception" à un moment vous modifier la colonne M qui lance Worksheet_Change.
Je vais regarder pour mettre en place un sémaphore.
1- Je crée une variable Public appelée Flag. ( Public pour être visible par tous. )
2- Dans WorsheetChange, je mets : If Flag = 0 Then Exit Sub
3- Dans "reception", je met au début Flag=0 et à la fin Flag=1
Donc WorsheetChange n'est active qui si elle n'est pas appelée par "reception".
C'est pour ça que je ne voyais rien, dans ma manip "reception" n'était surement jamais appelée.
J'ai lancé "reception" avec et sans sémaphore. L'erreur disparaît bien quand le flag est implémenté.
Ah au fait ! Je pense qu'à la fin de "reception", comme on a bloqué la mise à jour de la colonne N il faudrait relancer DateReception pour que la mise à jour soit complète, et de changer le commentaire Flag = 1 ' Autorisation et non Interdiction, ce qui ne voulait plus rien dire :
VB:
Sub reception()
Dim C As Range, Derlg As Long, Plage1 As Range, dteDate As Date, rngDate As Range, rngCode As Range
Application.ScreenUpdating = False
Flag = 0 ' Interdiction de modifier les valeurs par la macro Worksheet_Change.
....
...
End With
Application.ScreenUpdating = True
DateReception <<<<<<<<<<<<<<<<< A RAJOUTER
Flag = 1 ' Autorisation de modifier les valeurs par la macro Worksheet_Change.
End Sub
Comme je ne sais pas ce que font vos macros, et si ça marchait avant, essayer de mettre Flag=0 au début et Flag=1 à la fin.
Dans le cas où ce serait le même problème.
Ou plus simple de mettre Flag=0 et Flag=1 dans le module que vous appelez pour l'importation.
J'ai regardé un peu le code, si vous touchez à la colonne M vous aurez le même souci.
Le plus simple est de mettre Flag=0 au tout début et à la fin complète de la mise à jour Flag=1.
Re
J'ai fait un gros ménage et repris el fichier à 0 car il a évolué d'année en année
Bonne nouvelle ca fonctionne grâce à vous !
Ci-joint le fichier.
Merci
Re
Je reviens vers vous car du coup avec les mises à jour du fichier ca refonctionne !
Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column = 13 Then
RajoutDoublon
LivClient
Re,
Ca veut dire quoi "RajoutDoublon " ?
Si c'est écrire <DOUBLON> en colonne A alors ça peut être :
VB:
Range("A" & Target.Row)="<DOUBLON>"
Target.Row donne le numéro de ligne de la cellule qui a été cliquée.
Target.Column donne le numéro de colonne de la cellule qui a été cliquée. ( içi =13 )