Microsoft 365 Besoin d'aide pour rechercher doublon et mettre en forme

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 !

Moreno076

XLDnaute Impliqué
Bonsoir à tous.

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.

Je pense que c'est assez complexe à faire.

Merci
 

Pièces jointes

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é.

Testez pour voir.
 

Pièces jointes

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
 

Pièces jointes

Pour le tester je recopie les modules un par un ainsi que la feuille synthese sinon je ne peux tester le lancement.
Apres lancement j'ai l erreur
1582553235064.png
 
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.
 
Bonjour,

Ah non, je ne suis pas d'accord. On ne jette jamais l'éponge. 🙂

En PJ, il suffit de mettre dans la feuille Synthèse :
VB:
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Target.Column = 13 Then
        DateReception
    End If
End Sub
et à chaque fois que vous changerez une valeur dans la colonne M la colonne N se remettra à jour.🙂

... mais vous pouvez le faire aussi en formules !

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

End If
End Sub

Quelle syntaxe mettre après le Then? Merci
 
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 )
 
- 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

Retour