[VBA] Utiliser une erreur

Bonsoir,

J'aimerais vérifier si dans une plage qui liste des nom d'espèces végétales, si :

- le 3ème "mot" existe

> Si oui : si le 3ème "mot" = "subsp." ou "var.'

> si oui : si après le 4ème mot il y a quelque chose

En fonction de ces vérifications, je pourrai adapter la suite de mon code.

J'essayais d'utiliser cette macro :

Public Sub test_datas()
Dim lrlf&, i&, cib As Byte, tst As Double, tBase$, t

With Sheets("LISTE_FLORE") 'lf
lrlf = .UsedRange.SpecialCells(xlCellTypeLastCell).Row
    On Error Resume Next
    cib = .Range("1:1").Find("Ma liste", LookIn:=xlValues, Lookat:=xlWhole).Column 'remp par nmet
    If cib = 0 Then chk14 = chk14 + 1

    For i = 2 To lrlf
        tBase = .Cells(i, cib)
        t = Split(tBase, " ")
        If Err.t(2) Then tst = tst + 1: GoTo 1 Else tst = tst
        If t(2) = "subsp." Or t(2) = "var." Then
            If t(4) = "" Then tst = tst + 1 Else tst = tst
        End If
1     Next i
End With
End Sub

Où j'essaie notamment de jouer avec les erreurs, pour que si le mot après l'espace recherché n'existe pas, je me serve de l'erreur qui est renvoyée pour déterminer qu'il n'y a pas de "mot" après.

Sauf que je n'arrive pas à utiliser ces erreurs...

Avez-vous une idée de comment je devrais m'y prendre ?

J'ai joins un document si besoin.

Bonne soirée !

A plus tard

Bonjour,

à tester,

If IsError(t(2)) Then

Bonjour Le Drosophile

Voici ce que tu peux faire

Option Explicit
Public chk14 As Byte

Public Sub test_datas()
  Dim lrlf&, i&, cib As Byte, tst As Double, tBase$, t

  With Sheets("LISTE_FLORE") 'lf
    lrlf = .UsedRange.SpecialCells(xlCellTypeLastCell).Row
    On Error Resume Next
    cib = .Range("1:1").Find("Ma liste", LookIn:=xlValues, Lookat:=xlWhole).Column 'remp par nmet
    If cib = 0 Then chk14 = chk14 + 1

    For i = 2 To lrlf
      tBase = .Cells(i, cib)
      t = Split(tBase, " ")
      ' 3ème mot existe t'il
      If t(2) <> "" Then
        ' vérifier si 3ème mot = "subsp." ou "var."
        If t(2) = "subsp." Or t(2) = "var." Then
          ' vérifier si après le 4ème mot il y a quelque chose
          If UBound(t) > 3 Then
            MsgBox "5ème mot : " & t(4)
          End If
        End If
      End If
    Next i
  End With
End Sub

@+

Bonjour,

Je vous remercie pour vos deux réponses.

J'ai fait un mélange avec la proposition de BrunoM45 et la solution pour utiliser les erreurs indiquée par i20100 et tout fonctionne très bien !

Grâce à vous je peux désormais distinguer automatiquement deux sources de données ! Merci

Bonne journée !

Rechercher des sujets similaires à "vba utiliser erreur"