XL 2010 Imposer 2 choix de formats de cellule

sebbbbb

XLDnaute Impliqué
Bonjour a tous

je bloque sur un point et c'est pour celà que je fais appel a vos connaisssances

Dans une colonne C, j'aimerai que l'utilisateur utilise un numéro de dossier qui commence obligatoirement par WO-1N ou par WM-X

A la suite de ces données il faudrait ajouter le numéro de dossier qui commencerait de 01 jusqu'à 999 ; ainsi nous pourrions avoir les numéros analytique WO-1N12, WM-X12, WO-1N114, WN-X114 Etc etc

L'idéal étant qu'une analytique déjà inscrite ne puisse pas être inscrite à nouveau

j'espère etre clair. pouvez vous m'aider svp ?

merci a vous
Seb
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Seb,
Un essai en PJ avec :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Fin
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("A2:A1000")) Is Nothing Then
        If Target <> "" Then    ' cellule non vide, donc refus
            MsgBox "Désolé, celle ligne est déjà remplie."
            Exit Sub
        Else
            R = InputBox("Veuillez entrer une référence.", vbYesNo)         ' Remande de Ref
            If R <> "" Then ' Ref entrée non vide
                If Left(R, 5) = "WO-1N" Or Left(R, 5) = "WM-X" Then         ' Début de Ref correcte
                    Cells(Target.Row, "A") = R                              ' On range la Ref
                Else
                    MsgBox "La référence doit commencer par WO-1N ou WM-X." ' On rejette la Ref.
                End If
            End If
        End If
    End If
Fin:
End Sub
On clique dans une cellule colonne A, et on entre la Ref, si celle ci est correcte elle est entrée sinon elle est refusée. macro à adapter suivant besoins.
 

Pièces jointes

  • Seb.xlsm
    14.7 KB · Affichages: 14

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Donnez toutes les specs d'un seul coup, cela évite les rework. :rolleyes:
En PJ un essai avec :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Fin
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("A2:A1000")) Is Nothing Then
        If Target <> "" Then    ' cellule non vide, donc refus
            MsgBox "Désolé, celle ligne est déjà remplie."
            Exit Sub
        Else
            R = InputBox("Veuillez entrer une référence.", vbYesNo)         ' Remande de Ref
            If R <> "" Then ' Ref entrée non vide
                If Left(R, 5) = "WO-1N" Or Left(R, 5) = "WM-X" Then         ' Début de Ref correcte
                    If Application.CountIf(Range("A:A"), R) = 0 Then        ' Cette Ref n'existe pas
                        Cells(Target.Row, "A") = R                          ' On range la Ref
                    Else                                                    ' sinon
                        L = Application.Match(R, Range("A:A"), 0)           ' Sur quelle ligne existe t-elle
                        MsgBox "Désolé cette référence existe déjà en ligne " & L   ' Message de refus
                    End If
                Else
                    MsgBox "La référence doit commencer par WO-1N ou WM-X." ' On rejette la Ref.
                End If
            End If
        End If
    End If
Fin:
End Sub
J'ai fait la macro très "aérée" vous pouvez la reprendre très facilement.
 

Pièces jointes

  • Seb V2.xlsm
    16.2 KB · Affichages: 6

sylvanu

XLDnaute Barbatruc
Supporter XLD
Vous pouvez être un peu plus explicite ?
Signifie que pour moi, c'est ok.
Si une référence existe déjà elle est refusée. D'où ma demande de précisions.
20210427_163116.gif
 

Statistiques des forums

Discussions
312 177
Messages
2 085 977
Membres
103 078
dernier inscrit
diomy