[VBA] attribuer une valeur en fonction du résultat trouvé dans une cellule

Bonjour à tous.

Dans une colonne de mon tableau la valeur que l'on peut trouver est VXXX-VIP, VXXX-VIP-01, VXXX-VIP-02 etc...

Je veux pouvoir grace à un code lors de l'ajout d'une ligne écrire VXXX-VIP-02 si je trouve la valeur VXXX-VIP

Ou si je trouve la valeur VXXX-VIP-02 écrire VXXX-VIP-03

Ou si je trouve la valeur VXXX-VIP-03 écrire VXXX-VIP-04

J'ai réussi à faire ajouter le -02 quand je trouve une VXXX-VIP mais pour l'ajout des autres valeurs je bloque.

Tout le reste du code est fonctionnel, il n'y a que cette partie qui me pose souci. Ci-dessous le code que j'utilise

With TS_hybrid
Dim Lig3 As Long
NbLig = .DataBodyRange.Rows.Count

    For Lig3 = 1 To NbLig

     If .ListColumns("VPN-Instance").DataBodyRange(Lig3) = Me.vrflan And _
            (.ListColumns("Nom du sous réseau").DataBodyRange(Lig3) Like "*-VIP") Then
            Me.descrivip = "V" & Me.vrflan & "-VIP-02"
       Exit For
            ElseIf .ListColumns("VPN-Instance").DataBodyRange(Lig3) = Me.vrflan And _
            (.ListColumns("Nom du sous réseau").DataBodyRange(Lig3) Like "*-VIP-02") Then
            Me.descrivip = "V" & Me.vrflan & "-VIP-03"
       Exit For
            ElseIf .ListColumns("VPN-Instance").DataBodyRange(Lig3) = Me.vrflan And _
            (.ListColumns("Nom du sous réseau").DataBodyRange(Lig3) Like "*-VIP-03") Then
            Me.descrivip = "V" & Me.vrflan & "-VIP-04"
       Exit For
            ElseIf .ListColumns("VPN-Instance").DataBodyRange(Lig3) = Me.vrflan And _
            (.ListColumns("Nom du sous réseau").DataBodyRange(Lig3) Like "*-VIP-04") Then
            Me.descrivip = "V" & Me.vrflan & "-VIP-05"
       Exit For
            Else
            Me.descrivip = "V" & Me.vrflan & "-VIP"
            End If
   Next Lig3

End With

Je me doute que mon erreur est sans doute sur la façon dont j'analyse les valeurs de mon tableau...si qqn a une idée (il me sera compliqué de fournir un fichier car ceci n'est qu'une petite partie du code global du bouton de commande)

Merci à ceux qui se pencheront sur mon petit souci

bonjour,

eesaie ceci (fait l'hypothèse qu'il n'y a pas de trou dans la numérotation, on ne peut pas avoir VIP,VIP-03,VIP-04 sans VIP-02)

    vrfl = Me.vrflan
    With ts_hybrid
        NbLig = .DataBodyRange.Rows.Count
        ctr = .Application.CountIf(.ListColumns("VPN-Instance").DataBodyRange, "*-VIP*")
        If ctr = 0 Then
            dv = "V" & vrfl & "-VIP"
        Else
            dv = "V" & vrfl & "-VIP" & "-" & Format(ctr + 1, "00")
        End If
       Me.descrivip=dv
    End With
ctr = .Application.CountIf(.ListColumns("Nom du sous réseau").DataBodyRange, "*-VIP*")

Hello

petit retour sur le code fourni, j'ai apporté la modification de la colonne (ceci étant sans tableau source difficile pour toi de le deviner)

le code me retourne pour chaque valeur de vrflan

VXXX-VIP-50

Ok j'ai saisi pourquoi en analysant le code

J'aurai du préciser que XXX est un nombre compris entre 000 et 200

ce qui fait que je peux trouver V000-VIP, V001-VIP, etc

si j'ai VOO0-VIP, V000-VIP-02, le but est de créer le 003

voila en modifiant ton code avec

ctr = .Application.CountIf(.ListColumns("Nom du sous réseau").DataBodyRange, "V" & Me.vrflan & "*-VIP*")

cela fonctionne merci pour ton aide

Rechercher des sujets similaires à "vba attribuer valeur fonction resultat trouve"