Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

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

Pièces jointes

  • V20test.xlsm
    425.6 KB · Affichages: 3

Moreno076

XLDnaute Impliqué

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…