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

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

  • V60.xlsm
    376.8 KB · Affichages: 7
  • V61.xlsm
    413.7 KB · Affichages: 5

sylvanu

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

  • V50_1.xlsm
    605.6 KB · Affichages: 2

sylvanu

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

  • V50_2.xlsm
    605.9 KB · Affichages: 5

Moreno076

XLDnaute Impliqué
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
 

sylvanu

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

Moreno076

XLDnaute Impliqué
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
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
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 )
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa