Probleme de macro sur modif cellule C2

Bonjour j'ai un problème avec ma macro qui se lance quand la cellule C2 change, jais le message "Repère existant Doublon" qui s affiche que j'ai un doublon ou pas. Alors que tous marche si je mais la macro sur un bouton

Voici mon code

Sub MaMacro()

'-------------- Bloc ou Réactive le mouvement du curseur ------------------------------------------

Application.ScreenUpdating = False ' au début de ton code permet de demander à ton programme

' de ne pas afficher ces " mouvements " pendant le traitement.

' 1 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Range("AJ1").Select

ActiveCell.FormulaR1C1 = "=MID(RC[-33],1,4)" 'AJ1 AN1 Z000

Range("AK1").Select

ActiveCell.FormulaR1C1 = "=MID(RC[-34],5,3)" 'AK1 AN1 Z000 102

Range("AL1").Select

ActiveCell.FormulaR1C1 = "=MID(RC[-35],8,3)" 'AL1 AN1 Z000 102 980

Range("AM1").Select

ActiveCell.FormulaR1C1 = "=MID(R[1]C[-36],22,3)" 'AM1 AN1 Z000 102 980 262

Range("AO1").Select

ActiveCell.FormulaR1C1 = "=MID(RC[-38],13,5)" 'AO1 2558T

Range("AN1").Select

ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-4],"" "",RC[-3],"" "",RC[-2],"" "",RC[-1])"

' 1 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

' 2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Cells(1, 40).Select ' Se place a la ligne 1, colonne 40 ( Celulle AN1 ) ' Cellule ou il y a Z000 102 980 262

Selection.Copy ' Copy

Range("AE1").Select ' Se positionne en AE1

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False ' Et colle la valeur seule

Cells(1, 41).Select ' Se place a la ligne 1, colonne 41 ( Celulle AO1 )

Selection.Copy ' Copy

Range("AH1").Select ' Se positionne en AH1 ' Cellule ou il y a 2558T

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False ' Et colle la valeur seule

Range("AJ1:AO1").Select ' Effacement des celulles AJ1:AO1 de la

Selection.ClearContents ' Feuille " Référence "

Range("C3").Select

' 2 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

' 3 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

'--------------- Début Boucle A -------------------------------------

For A = 1 To 15 ' Cette boucle permet de passer d'une colonne à une autre

' ( en tout il y a 15 colonnes "For=Pour" "A = variable" )

'-------------------------------------------------------------

'--------------- Début Boucle i ------------------------------

For i = 1 To 200 ' Cette boucle permet de tester toutes les cellules d'une

' colonne( 200 cellules par colonne )

ActiveCell.Offset(1, 0).Select

If ActiveCell = Range("AH1") Then

MsgBox (" Repère existant Doublon ")

End

End If

Next i ' Next = Suivant (1 à 200)

'--------------- Fin Boucle i ----------------------------------

'---------------------------------------------------------------

ActiveCell.Offset(-200, 0).Select '200

ActiveCell.Offset(0, 1).Select

Next A ' Next = Suivant (1 à 15)

'--------------- Fin Boucle A ---------------------------------------

' 3 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

'-------------- Bloc ou Réactive le mouvement du curseur ------------------------------------------

Application.ScreenUpdating = True ' A la fin de ta macro, tu mets ensuite cette

' fonction à TRUE pour la réactiver.

'--------------- Début Boucle X --------------------------------------------------------------------

Range("B3").Select

For x = 1 To 200

ActiveCell.Offset(1, 0).Select

If ActiveCell = Range("AE1") Then

GoTo CELLULE_VIDE ' Branche CELLULU_VIDE

End If

Next x ' Next = Suivant (1 à 200)

Range("D1").Select ' Else(sinon)

MsgBox (" Référence non trouvée - ressaisir une autre fiche ")

Range("D1").Select

End

'--------------- FIN Boucle X ----------------------------------------

'-------------------------------------------------------------------------------------------------

'------------------ GOTO CELLULE_VIDE --------------------------------

CELLULE_VIDE:

Do While Not (IsEmpty(ActiveCell)) ' Boucle pour se positionner sur la première cellule vide

' Do(fais) While(Pendant que) Not(Pas) IsEmpty(Est vide)

ActiveCell.Offset(0, 1).Select ' NbLigne = NbLigne + 1

Loop

ActiveCell.Value = Cells(1, 34).Value

'------------------- Fin Goto ----------------------------------------

'-------------------------------------------------------------------------------------------------

Range("D1:D2").Select ' Effacement des celulles D1:D2 de la

Selection.ClearContents ' Feuille " Référence "

Range("C1").Select ' Positionne le curseur en D1

End Sub ' Fin de la macro

Merci de vos réponse, ha est pas trop de rire SVP je ne connais rien en vba j'ai fais se code avec des morceaux sur internet

Bonjour

Ton fichier complet serait plus utile que la macro seule

Bonsoir, voila le fichier et merci

19balz-leger.xlsm (180.33 Ko)

Bonjour

Avec les données existantes tu as bien un doublon en cellule H31

Dans le cas où normalement tu n'as pas de doublon

Ce qui se passe en fin de macro tu effaces Range("D1:D2") et à cause des cellules fusionnées cela touche la cellule C2 donc la macro recommence en recherchant une cellule vide

Pour y remédier modifies ta macro événementielle (partie surlignée)

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C2")) Is Nothing Then
If Target.Cells(1, 1) = "" Then Exit Sub
Call MaMacro  'ici le nom de ta macro précéde de Call
End If
End Sub

Un grand merci a toi Banzai64 et surtout pour la rapidité de la réponse, ça fonctionne nickel.

Rechercher des sujets similaires à "probleme macro modif"