Déclaration des variables (RESOLUT)

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 !

chaelie2015

XLDnaute Accro
Bonjour Forum

je souhaite rassembler deux codes ci dessous

VB:
Private Sub Worksheet_Change(ByVal c As Range)
'1ere code
    If c.Column = 1 And c.Row > 3 And c.Value <> "" Then
        c.Replace "/", "-", xlPart
        Sheets("TYPE").Copy After:=Sheets(Sheets.Count)
        On Error GoTo fin
        ActiveSheet.Name = c.Value
    End If
    Exit Sub
fin:
    Application.DisplayAlerts = False
    ActiveSheet.Delete
    Application.DisplayAlerts = True
    Sheets("ASBUILT").Activate

'2eme code
If Not Intersect(Range("A4:A2015"), Target) Is Nothing And Target.Count = 1 Then
    For Each c In Range("A4:A2015")
       If UCase(c.Value) = UCase(Target.Value) And c.Row <> Target.Row And c.Value <> Empty Then
         réponse = MsgBox("Doublon en :" & c.Address & Chr$(10) & _
           "Voulez-vous le garder ?", vbYesNo + vbInformation, "DETECTION DOUBLON")
         If réponse = vbNo Then
            Application.EnableEvents = False
            Target.Value = Empty
            Target.Select
            Application.EnableEvents = True
          End If
        End If
      Next c
    End If
End Sub
mais j'ai trouvé un bug au niveau de déclaration de la variable traget
sachant que le premier code pour faire clignoter la cellule et le 2eme evite les doublon
Salutations
 
Dernière édition:
Re : Déclaration des variables

Bonjour,

on peut se demander pourquoi avoir changer le nom de l'argument "target" par "c", de ce fait "target" n'est ni défini, ni initialisé dans ton code...

bonne journée
@+

Edition : bonjour 00🙂🙂
 
Dernière édition:
Re : Déclaration des variables

Bonjour, chaelie2015, Pierrot 😀, le Forum,

...on peut se demander pourquoi avoir changer le nom de l'argument "target" par "c", de ce fait "target" n'est ni défini, ni initialisé dans ton code...

L'explication 🙂 est ici.

Code:
Option Explicit
Private Sub Worksheet_Change(ByVal c As Range)
    Dim réponse
    If c.Count > 1 Then Exit Sub
    If c.Column = 1 And c.Row > 3 And c.Value <> "" Then
        If Application.WorksheetFunction.CountIf([a4:a2015], c) > 1 Then _
           If MsgBox(Prompt:="DETECTION DOUBLON(S) : " & Application.WorksheetFunction. _
                             CountIf([a4:a2015], c), Title:="Attention...", Buttons:=vbYesNo) = _
                             vbNo Then c = "": c.Select
        c.Replace "/", "-", xlPart
        Sheets("TYPE").Copy After:=Sheets(Sheets.Count)
        On Error GoTo fin
        ActiveSheet.Name = c.Value
    End If
    Exit Sub
fin:
    Application.DisplayAlerts = False
    ActiveSheet.Delete
    Application.DisplayAlerts = True
    Sheets("ASBUILT").Activate
End Sub

Les doublons peuvent être facilement repérés par une mise en forme conditionnelle.

A bientôt 🙂
 
Re : Déclaration des variables

Bonjour Pierrot, 00,forum
Merci d'avoir repondu , concernant la question de pierrot ,le 1er code est de 00, le 2eme code je l'ai trouvé dans le forum
et pour les doublon, oui effectivement on peut mettre MFC exemple :=NB.SI($A$4:$A$2015;A4)>1
Mais dans ce cas (MFC) est ce qu'il ya la possibilité de ne pas terminer la saisi si il ya un doublon?
Merci par avance et Salutation
 
Re : Déclaration des variables

Re-bonjour,

Si la saisie de doublons est proscrite, toute MFC devient inutile avec le code suivant :

Code:
Option Explicit
Private Sub Worksheet_Change(ByVal c As Range)
    Dim réponse
    If c.Count > 1 Then Exit Sub
    If c.Column = 1 And c.Row > 3 And c.Value <> "" Then
        If Application.WorksheetFunction.CountIf([a4:a2015], c) > 1 Then _
        MsgBox "Cette valeur existe déjà... Elle doit être supprimée.", Title:="ATTENTION !": c = "": c.Select
        c.Replace "/", "-", xlPart
        Sheets("TYPE").Copy After:=Sheets(Sheets.Count)
        On Error GoTo fin
        ActiveSheet.Name = c.Value
    End If
    Exit Sub
fin:
    Application.DisplayAlerts = False
    ActiveSheet.Delete
    Application.DisplayAlerts = True
    Sheets("ASBUILT").Activate
End Sub

Inutile, également, de poser la question de savoir si la valeur doit être gardée ou pas.

A bientôt 🙂
 
Re : Déclaration des variables

Re-bonjour,

Petite précision...

Je remplace souvent "Target" par "c".

Code:
Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub

A bientôt 🙂
 
- 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

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
510
Réponses
5
Affichages
267
Réponses
1
Affichages
349
Retour