Chercher du texte dans une plage de données

Bonjour à tous,

Je débute VBA mais je bloque sur un truc bête,

Je souhaiterai (en cliquant sur un bouton) vérifier si dans une plage de données j'ai un slash (donc pas de nombre dans mon tableau)

Si j'ai un slash alors msgbox qui me prévient + descendre en fin de tableau

Si je n'en ai pas alors descendre en bas du tableau

Je bloque au niveau du 'if"

Ci dessous mon "code":

Sub Validation()

If Range("H3:J337").Value = "/" Then

Rep = MsgBox("Avertissement: des prix ne sont pas connus") and ActiveWindow.SmallScroll Down:=324

Else
    ActiveWindow.SmallScroll Down:=324

End If

End Sub

Merci d'avance pour votre aide

bonjour,

une proposition (message affiché dès qu'il y a au moins un /)

Sub Validation()
    If Application.CountIf(Range("H3:J337"), "/") > 0 Then
        MsgBox "Avertissement: des prix ne sont pas connus"
    End If
    Application.Goto "R324C8"
    ActiveWindow.SmallScroll 10
End Sub

Bonjour

Essayez comme ceci

Sub Validation()
Dim i As Integer

For i = 3 To 337
    If Not IsNumeric(Range("H" & i)) Or Not IsNumeric(Range("I" & i)) Or Not IsNumeric(Range("J" & i)) Then
        MsgBox "Avertissement: des prix ne sont pas connus"
        Exit For
    End If
Next i
ActiveWindow.SmallScroll Down:=324
End Sub

si ok...

Cordialement

Bonjour,

Je propose aussi un truc

Sub Validation()
For Each c In Range("H3:J337")
    If c.Value = "/" Then
        MsgBox ("Avertissement: des prix ne sont pas connus")
    End If
Next
ActiveWindow.SmallScroll Down:=324
End Sub

Bonjour

Option Explicit

Sub Validation()
  Dim rep As Object
  Dim rng As Range

  Set rng = Range("H3:J337")
  Set rep = rng.Find("/")
  If Not rep Is Nothing Then MsgBox("Avertissement: des prix ne sont pas connus")
  ActiveWindow.SmallScroll Down:=324
End Sub

Bonjour,

Merci à vous tous pour votre aide

Je jette un œil à tout cela et je vous fais un retour !

Bonne journée

Je suis parti en utilisant le code de Thrrybo car c'est celui que je comprends le mieux, merci à toi et merci à tous, ça fonctionne !

Sur la base de ce code, que dois-je ajouter pour que:

- Si 1 seul slash alors "Avertissement : un prix n'est pas connu"

- Si plusieurs slash alors "Avertissement : des prix ne sont pas connus"

Sub Validation()
For Each c In Range("H3:J337")
    If c.Value = "/" Then
        MsgBox ("Avertissement: des prix ne sont pas connus")
    End If
Next
ActiveWindow.SmallScroll Down:=324
End Sub

J'attends vos retours,

Merci d'avance

EDIT: Le code fonctionne parfaitement mais sort autant de MsgBox qu'il y a de slash.

Je vais me tourner vers le code de h2so4:

Sub Validation()
    If Application.CountIf(Range("H3:J337"), "/") > 0 Then
        MsgBox "Avertissement: des prix ne sont pas connus"
    End If
    Application.Goto "R324C8"
    ActiveWindow.SmallScroll 10
End Sub

Même question pour le singulier/pluriel svp


Je n'oublierai pas de valider le sujet promis Dan

Bonjour à tous,

Même question pour le singulier/pluriel svp

Un essai....

Sub validation()
 Dim plage As Range, cmpt
  Set plage = Range("H3:J337")
   cmpt = Application.CountIf(plage, "/")
    Select Case cmpt
     Case Is = 1
      MsgBox "Avertissement: un prix n'est pas connu"
     Case Is > 1
      MsgBox "Avertissement: " & cmpt & "  prix ne sont pas connus"
    End Select
End Sub

Cordialement,

Bonjour

Le code fonctionne parfaitement mais sort autant de MsgBox qu'il y a de slash.

Prenez soit le code de yal_excel ou celui de xorsankukai qui sont les plus rapide. On évite de créer un code avec Boucle

Cordialement

Bonjour,

@Xor, à quoi sert "Plage"? Je taquine en cette fin d'année !

Pour les codes avec boucle il faut ajouter un "Exit For" à la suite du MsgBox, mais cela ne résous pas la demande du singulier et pluriel, h2so4 a encore frappé ! Bon il n'avait pas toutes les données mais le CountIf est ici l'idéal !

@ bientôt

LouReeD

Re,

Hello LouReeD,

@Xor, à quoi sert "Plage"? Je taquine en cette fin d'année !

Bin , je l'utilise dans ma fonction:

cmpt = Application.CountIf(plage, "/")

....(J'ai rectifié dans mon post précédent, petit oubli......dur dur la fin d'année !)

Amitiés,

@Lou Reed...

Taquineur va !

Mais vrai pour la Plage, comme ceci c'est aussi bien

cmpt = Application.CountIf(Activesheet.range("H3:J337", "/")

On évite l'utilisation d'une variable

Crdlt

En effet, une variable permet de mettre en mémoire une donnée récupérée sur une feuille par exemple, et elle est utile si l'on a besoin de la récupérer plusieurs fois cela évite les accès feuille sui sont chronophages. Ici la donnée est utilisée qu'une seule fois donc pas utile de passer par une variable pour la stocker car on économise pas d'accès feuille, non ?

@ bientôt

LouReeD

Re,

@Dan, LouReeD:

Merci pour ces précisions, il est vrai que j'ai tendance à utiliser les variables systématiquement , je prends donc note de vos recommandations,

Bon réveillon à tous,

Merci à tous ça fonctionne comme je l'entendais !

et merci pours les compléments d'informations

Bonne fin d'année

Bonsoir,

Merci pour votre retour et vos remerciements ! Et bonne année à vous !

@ bientôt

LouReeD

Bonsoir …

Par ces temps-ci, on tourne beaucoup trop avec un abus de coupes de champagne. Pour aller droit au but

Bonsoir …

Par ces temps-ci, on tourne beaucoup trop avec un abus de coupes de champagne. Pour aller droit au but

Sub Oups()
  If Application.CountIf([H3:J337], "/") = 0 Then MsgBox "un des / manque !", , "Oups ...": [H338].Select
End Sub

On peut remplacer le champagne (/) par tout autre truc attendu !

Hic … « à la vôtre quand même »

Rechercher des sujets similaires à "chercher texte plage donnees"