Code qui n'exécute pas

Résolu/Fermé
muiigisha Messages postés 61 Date d'inscription lundi 25 septembre 2017 Statut Membre Dernière intervention 6 décembre 2017 - Modifié le 4 déc. 2017 à 11:26
muiigisha Messages postés 61 Date d'inscription lundi 25 septembre 2017 Statut Membre Dernière intervention 6 décembre 2017 - 6 déc. 2017 à 10:55
Bonjour,
j'ai écrit un code et j'ai pas de messages d'erreur, quand je compile pas à pas il marche bien. Mais une fois que je le jance il ne fait rien. mon code c'est le suivant:


ch="CO"
Wbk.Activate
TabOrigSupChoice = Range("BB2:BB30000")
Table = Range("BB2:BB30000")
'*****************************each Original Supplier is reported to one name*************************************
For cmpt1 = LBound(TabOrigSupChoice, 1) To UBound(TabOrigSupChoice, 1)
For cmpt2 = LBound(Table, 1) + cmpt1 To UBound(Table, 1)
If Not TabOrigSupChoice(cmpt1, 1) Like "*" & ch & "*" Then
If (Table(cmpt2, 1) <> "") And (TabOrigSupChoice(cmpt1, 1) <> "") Then
If TabOrigSupChoice(cmpt1, 1) Like "*" & Table(cmpt2, 1) & "*" Or _
Table(cmpt2, 1) Like "*" & TabOrigSupChoice(cmpt1, 1) & "*" Then
Wbk.Activate
Cells(cmpt1 + 1, 54).Select
Selection.value = Table(cmpt2, 1)
Exit For
End If
Else
Exit For
End If
Else
Exit For
End If
Next
Next


pouvez-vous m'aider svp?
merci d'avance

6 réponses

thev Messages postés 1770 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 11 novembre 2021 667
Modifié le 4 déc. 2017 à 12:01
Bonjour,

D'après le code, il s'agit plutôt de tableaux à 2 dimensions (ligne,colonne) que d'objets Range. Dans ce cas, la bonne définition est :

TabOrigSupChoice = Range("BB2:BB30000").Value
Table = Range("BB2:BB30000") .Value

Mieux vaut préciser la propriété Value (même si elle est en général prise par défaut) pour être sûr du résultat.
 
1
muiigisha Messages postés 61 Date d'inscription lundi 25 septembre 2017 Statut Membre Dernière intervention 6 décembre 2017
4 déc. 2017 à 14:15
Bonjour thev,
c'est exactement des tableaux. Ok c'est noté
0
f894009 Messages postés 16862 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 janvier 2023 1 679
4 déc. 2017 à 16:53
Bonjour,
Like
sensible à la casse?
Oui
1
muiigisha Messages postés 61 Date d'inscription lundi 25 septembre 2017 Statut Membre Dernière intervention 6 décembre 2017
4 déc. 2017 à 17:04
Aie la galère,
est ce qu'il n'y aurait pas d'autres instructions pour comparer des chaines de caractères et qui seraient pas sensibles à la casse?
peut être instr()?
0
jordane45 Messages postés 36864 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 janvier 2023 4 466 > muiigisha Messages postés 61 Date d'inscription lundi 25 septembre 2017 Statut Membre Dernière intervention 6 décembre 2017
4 déc. 2017 à 17:16
0
muiigisha Messages postés 61 Date d'inscription lundi 25 septembre 2017 Statut Membre Dernière intervention 6 décembre 2017
5 déc. 2017 à 08:11
Merci, je jette un coup d'oeil
0
f894009 Messages postés 16862 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 janvier 2023 1 679
4 déc. 2017 à 17:24
Re a vous deux,

Tout simplement Ucase
1
muiigisha Messages postés 61 Date d'inscription lundi 25 septembre 2017 Statut Membre Dernière intervention 6 décembre 2017
4 déc. 2017 à 17:25
désolée mais quelle serait la syntaxe, svp?
0
f894009 Messages postés 16862 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 janvier 2023 1 679 > muiigisha Messages postés 61 Date d'inscription lundi 25 septembre 2017 Statut Membre Dernière intervention 6 décembre 2017
Modifié le 4 déc. 2017 à 17:33
Re,

peut être instr()? Sensible a la case

 If UCase(TabOrigSupChoice(cmpt1, 1)) Like "*" & UCase(Table(cmpt2, 1)) & "*" Or _
                       UCase(Table(cmpt2, 1)) Like "*" & UCase(TabOrigSupChoice(cmpt1, 1)) & "*" Then
0
muiigisha Messages postés 61 Date d'inscription lundi 25 septembre 2017 Statut Membre Dernière intervention 6 décembre 2017 > f894009 Messages postés 16862 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 janvier 2023
Modifié le 5 déc. 2017 à 16:04
Merci ça marche à merveille.
svp je voudrais tester si une case de mon tableau est vide mais j'arrive pas en faisant ainsi:

if Table(cmpt2, 1) =""then
exit for
end if

ça m'affiche une erreur, comme si c'est l'adresse en fait qui est considérée comment indexer directement le contenu de la cellule?

merci beaucoup pour toute l'aide déjà apportée et la promptitude

merci d'avance
0
muiigisha Messages postés 61 Date d'inscription lundi 25 septembre 2017 Statut Membre Dernière intervention 6 décembre 2017 > muiigisha Messages postés 61 Date d'inscription lundi 25 septembre 2017 Statut Membre Dernière intervention 6 décembre 2017
6 déc. 2017 à 10:55
en fait vu que c'est un tableau d'entier il faut plutôt écrire:

if Table(cmpt2, 1) =0 then
exit for
end if

et ça marche. en tout cas chez moi.

Merci encore à vous
0
jordane45 Messages postés 36864 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 janvier 2023 4 466
4 déc. 2017 à 11:30
Bonjour,

1 - Il nous faut le code complet
2 - Il faut nous indiquer comment tu le lances

Au passage, pour définir des RANGE il faut utiliser l'instruction SET
par exemple :
'si TabOrigSupChoice  est défini en tant que range
' Dim TabOrigSupChoice  as Range
Set TabOrigSupChoice = Range("BB2:BB30000")


0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
muiigisha Messages postés 61 Date d'inscription lundi 25 septembre 2017 Statut Membre Dernière intervention 6 décembre 2017
Modifié le 4 déc. 2017 à 15:15
Bonjour Jordane,
je fait appel à ce module depuis un autre comme ceci:
Call OneSUP_OneDesignation.OneSUP_OneDesignation(WDte)


La première boucle fait bien ce qu'elle doit faire mais la 2ème non.

Sub OneSUP_OneDesignation(Wbk As Workbook)
    
    Dim TabOrigSup(), TabOrigSupChoice(), Table() As Variant 
    Dim cmpt1, cmpt2 As Integer
    Dim ch As String

    'Set Wbk = Workbooks.Open(Filename:=strFileToOpen)
    ch = "GE"
    Wbk.Activate
    TabOrigSup = Range("AO2:AO30000").value
    TabOrigSupChoice = Range("BB2:BB30000").value
    '************************Column "Original supplier choices" is filled******************************************
    For cmpt1 = LBound(TabOrigSupChoice, 1) To UBound(TabOrigSupChoice, 1)
        If (TabOrigSupChoice(cmpt1, 1) = "") Or (TabOrigSupChoice(cmpt1, 1) = "Other") Then
            Wbk.Activate
            Cells(cmpt1 + 1, 54).Select
            Selection.value = TabOrigSup(cmpt1, 1)
        End If
    Next
    
    Wbk.Activate
    TabOrigSupChoice = Range("BB2:BB30000").value
    Table = Range("BB2:BB30000").value
    '*****************************each Original Supplier is reported to one name*************************************
     For cmpt1 = LBound(TabOrigSupChoice, 1) To UBound(TabOrigSupChoice, 1)
        For cmpt2 = LBound(Table, 1) + cmpt1 To UBound(Table, 1)
             If Not TabOrigSupChoice(cmpt1, 1) Like "*" & ch & "*" Then
                If (Table(cmpt2, 1) <> "") And (TabOrigSupChoice(cmpt1, 1) <> "") Then
                    If TabOrigSupChoice(cmpt1, 1) Like "*" & Table(cmpt2, 1) & "*" Or _
                        Table(cmpt2, 1) Like "*" & TabOrigSupChoice(cmpt1, 1) & "*" Then
                        Wbk.Activate
                        Cells(cmpt1 + 1, 54).Select
                        Selection.value = Table(cmpt2, 1)
                        Exit For
                    End If
                Else
                    Exit For
                End If
            Else
                Exit For
            End If
        Next
    Next

End Sub
0
muiigisha Messages postés 61 Date d'inscription lundi 25 septembre 2017 Statut Membre Dernière intervention 6 décembre 2017
4 déc. 2017 à 14:48
Une question svp: est ce que l'instruction << ...like "*"&...&"*" >> est sensible à la casse?
0