Problème de comparaison de string

taratata

XLDnaute Junior
Bonjour,

le but est de comparer une variable string avec chaque valeur issue d'une colonne d'un tableau structuré.
La variable string est issue du choix fait par le ComboBox Dosage (ex 30/70)

VB:
Sub Suppression_Ligne_CB_Dosage(Nom_Feuille, Nom_Tableau)
    
Dim x As Integer
Dim No_Valeur_CB As String

For x = 1 To 5
    No_Valeur_CB = a(1, x)
    'MsgBox No_Valeur_CB

    Application.ScreenUpdating = False                                                  ' désactive la mise à jour de l'écran
    Application.Calculation = xlCalculationManual                                       ' plus rapide si de nombreuses formules
    On Error Resume Next                                                                ' pas de correspondance
    
    With [Tab_BNIC_Provisoire]
        .Columns(13).EntireColumn.Insert                                                ' Insertion colonne auxiliaire
        
       [B] [COLOR=rgb(184, 49, 47)].Columns(13) [/COLOR][/B][COLOR=rgb(184, 49, 47)][B]= "="[/B][/COLOR][B][COLOR=rgb(184, 49, 47)] & "(RC[-10]=" & No_Valeur_CB & ")"[/COLOR]   [/B]         ' RC[-1](Col Cible à traiter) : Nb Col avant Col Auxiliaire (Position Relative) --> "D"
                                                                                                                         ' Valeur de retour --> True - False

        .Columns(13) = .Columns(13).Value                                               ' supprime les formules --> =(E6=No_Valeur_CB)
        
        .Sort .Columns(13), xlDescending, Header:=xlYes                                 ' tri pour accélérer

        '.Columns(13).SpecialCells(xlCellTypeConstants, 6).EntireRow.Delete
        '.Columns(13).ClearContents                                                      ' Supprimer data dans les cellules de la colonne
    End With
    'Application.Calculation = xlCalculationAutomatic
Next

'Call Suppression_Col_After(Nom_Feuille, Nom_Tableau, "13")

' --> Affichage dans le ListBox
     ' Déclaration du tableau structuté
     tablo = [Tab_BNIC_Provisoire]
     ' Lien RowSource
     ListBox_BNIC.List = tablo
    
End Sub

j'obtient toujours la valeur FAUX

1028360


Pour faire le test de mon fichier joint,
Onglet "DIY_Liquide" Bouton "Créer un liquide"
Sélectionner un Taux de nicotine
la listbox se met à jour
Sélectionner un dosage présent dans la listBox (désolé je n'ai pas encore filtrer )
le résultat est dans la feuille "Provisoire"

Pour relancer le test, il faut supprimer les feuilles CB_TN_data CB_Dosage_data Provisoire

le probléme doit venir d'ici --> .Columns(13) = "=" & "(RC[-10]=" & No_Valeur_CB & ")"
j'ai essayé avec = ou <> mais ne fonctionne pas

qui aurai une solution s'il vous plaît
merci
 

Pièces jointes

  • 1 - TEST - 01.xlsm
    723.6 KB · Affichages: 4

taratata

XLDnaute Junior
j'ai trouvé cette solution,

par contre j'ai une soucis pour supprimer la ligne du tableau


VB:
Sub Suppression_Ligne_String(Nom_Feuille, Nom_Tableau, Valeur_CB)
    Dim WsC1 As Worksheet
    Dim list_obj As ListObject
    Set WsC1 = Sheets(Nom_Feuille)
    Set list_obj = WsC1.ListObjects(Nom_Tableau)
    
    LastRow = (list_obj.Range.Rows.Count)
    'MsgBox LastRow
        
    Dim k As Integer
    Dim T As String
    Dim r

coincoin:
    LastRow = (list_obj.Range.Rows.Count)
        For k = 2 To LastRow
            'MsgBox list_obj.Range.Cells(k, 3).Value
            T = list_obj.Range.Cells(k, 3).Value
          
            r = StrComp(T, Valeur_CB, vbBinaryCompare)
            
            If r <> 0 Then
                'MsgBox "k  " & k & Chr(10) & Chr(13) & _
                "T  " & T & Chr(10) & Chr(13) & _
                "r  " & r & Chr(10) & Chr(13) & _
                "Valeur_CB  " & Valeur_CB & Chr(10) & Chr(13)

                list_obj.Range.Cells(k, 3).EntireRow.Delete
                'list_obj.Range.Cells(k, 3).Delete
                GoTo coincoin
            End If
        Next

' --> Affichage dans le ListBox
     ' Déclaration du tableau structuté
     tablo = [Tab_BNIC_Provisoire]
     ' Lien RowSource
     ListBox_BNIC.List = tablo
    
End Sub


avec l'une ou l'autre ligne de suppression, excel tourne en boucle.
Une fois relancé, les lignes sont bien supprimée

list_obj.Range.Cells(k, 3).EntireRow.Delete
'list_obj.Range.Cells(k, 3).Delete


merci de votre aide
 

taratata

XLDnaute Junior
voici ma solution

VB:
    Dim WsC1 As Worksheet
    Dim list_obj As ListObject
    Set WsC1 = Sheets(Nom_Feuille)
    Set list_obj = WsC1.ListObjects(Nom_Tableau)
    
    LastRow = (list_obj.Range.Rows.Count)
    'MsgBox LastRow
        
    Dim k As Integer        ' Compteur
    Dim T As String         ' Valeur trouvée
    Dim r                   ' Valeur de retour StrComp
    ' -1  est inférieur  ---  0,1 est supérieur  ---  0 est égal

    LastRow = (list_obj.Range.Rows.Count)
    
    ' Filtrage et Suppression commence par la dernière ligne du tableau structuré
    For k = LastRow To 2 Step -1
        T = list_obj.Range.Cells(k, 3).Value
        'MsgBox list_obj.Range.Cells(k, 3).Value
        
        r = StrComp(T, Valeur_CB, vbBinaryCompare)
        
        If r <> 0 Then
            'MsgBox "Ligne k  " & k & Chr(10) & Chr(13) & _
            "Valeur T  " & T & Chr(10) & Chr(13) & _
            "StrComp r  " & r & Chr(10) & Chr(13) & _
            "Valeur_CB  " & Valeur_CB & Chr(10) & Chr(13)

            list_obj.Range.Cells(k, 3).EntireRow.Delete
        End If
    Next
 

Statistiques des forums

Discussions
314 653
Messages
2 111 579
Membres
111 207
dernier inscrit
max008