Comment imposer un format numérique dans des cellules avec un copier-coller

Bonjour,

Je n'arrive pas à imposer un format numérique dans des cellules d'un tableau lorsque je fais un copier-coller de plusieurs valeur en même temps.

Dans le fichier exemple joint j'ai appliqué la macro ci-dessous pour la feuil2 qui fonctionne très bien. Cependant lorsque je veux faire un coller de plusieurs valeurs dans la colonne A il ne me dit pas si dans les valeurs mises certaines ne sont pas numérique. J'ai essayé la même chose avec la validation des données mais j'ai toujours le même soucis.

Est-ce que quelqu'un peut me donner une solution pour éviter que je saisisse les valeurs une à une ?

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Range("A2:A20"), Target) Is Nothing And Target.Count = 1 Then
    If Not IsNumeric(Target) Then
      MsgBox "Merci de saisir une valeur numérique !!! "
      With Application
        .EnableEvents = False
        .Undo
        .EnableEvents = True
      End With
    End If
  End If
End Sub
9test-saisie.xlsm (13.92 Ko)

Cordialement.

Bonjour Philippe. P,

Il faut utiliser For Each Après le Then

Soit Dim c as range

For each c in range(a2:a20)

If not isnumeric(c) then Msgbox etc...

Merci X Cellu pour ton retour mais j'ai toujours le même soucis. Si je copie des valeurs non numérique en "paquet" dans A il ne le détecte pas (cf fichier exemple joint).

Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
  If Not Intersect(Range("A2:A20"), Target) Is Nothing And Target.Count = 1 Then
        For Each c In Range("A2:A20")

            If Not IsNumeric(Target) Then
                MsgBox "Merci de saisir une valeur numérique !!! "
                With Application
                .EnableEvents = False
                .Undo
                .EnableEvents = True
                End With
            End If
        Next c
  End If
End Sub

A nouveau,

Je suis passé sur Ordi plutôt que Phone.

Don voici ci-dessous. Il me détecte bien si erreur.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
  If Not Intersect(Range("A2:A20"), Target) Is Nothing And Target.Count = 1 Then
        For Each c In Range("A2:A20")

    If Not IsNumeric(Target) Then ActiveCell.Offset(-1, 0) = "": MsgBox "Merci de saisir une valeur numérique !!! ": Exit Sub
                'With Application
                '.EnableEvents = False
                '.Undo
                '.EnableEvents = True
                'End with
            'End If
        Next c
  End If
End Sub

Merci de nouveau. Le code fonction bien si je saisie cellule par cellule mais si je copie plusieurs valeurs il ne fait rien ou alors je ne sais pas faire.

En PJ le fichier test avec ton code et le tableau remplit par rapport à un copier coller de la colonne F2 à la colonne A2

A nouveau,

Après avoir téléchargé ton fichier. Quelques modifications sur la macro a été apportée.

Voir note rouge sur la feuille.

Yes les valeurs non numériques déclenchent le message. Par contre pourquoi mettre un "Exit sub après la commande "MsgBox "Merci de saisir une valeur numérique !!! "" ? Si je l'enlève cela permet d'avoir le nombre de valeur non numérique que j'ai copié dans la colonne, qu'est-ce que tu en penses ?

Une question à quoi sert la commande "Application.CutCopyMode = False" que tu as mis après la commande "If Not IsNumeric(c) Then" et avant le "End Sub" ? J'ai remarqué que si je la laisse ou non il n'y a pas d'incident sur le résultat de la macro.

Sinon merci pour le temps consacré à me proposer une solution.

Je mets le sujet en résolu.

Suite;

Une légère modification. Si le message d'erreur survient, et après avoir fait un clic sur OK. Le collage est effacé.

Cela permet de laisser la zone en colonne A vierge. Et ainsi de ne pas avoir à corriger soit-même.

Impec la modif Par contre je viens de constater que si je saisie une valeur directement dans la cellule la macro ne fonctionne pas. Surprenant.

Rechercher des sujets similaires à "comment imposer format numerique copier coller"