Code qui n'exécute pas [Résolu]

muiigisha 61 Messages postés lundi 25 septembre 2017Date d'inscription 6 décembre 2017 Dernière intervention - 4 déc. 2017 à 11:25 - Dernière réponse : muiigisha 61 Messages postés lundi 25 septembre 2017Date d'inscription 6 décembre 2017 Dernière intervention
- 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

Afficher la suite 
61Messages postés lundi 25 septembre 2017Date d'inscription 6 décembre 2017 Dernière intervention

14 réponses

Répondre au sujet
thev 1689 Messages postés lundi 7 avril 2008Date d'inscription 11 décembre 2017 Dernière intervention - Modifié par thev le 4/12/2017 à 12:01
+1
Utile
1
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.
 
muiigisha 61 Messages postés lundi 25 septembre 2017Date d'inscription 6 décembre 2017 Dernière intervention - 4 déc. 2017 à 14:15
Bonjour thev,
c'est exactement des tableaux. Ok c'est noté
Commenter la réponse de thev
f894009 12539 Messages postés dimanche 25 novembre 2007Date d'inscription 11 décembre 2017 Dernière intervention - 4 déc. 2017 à 16:53
+1
Utile
3
Bonjour,
Like
sensible à la casse?
Oui
muiigisha 61 Messages postés lundi 25 septembre 2017Date d'inscription 6 décembre 2017 Dernière intervention - 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()?
jordane45 19201 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 10 décembre 2017 Dernière intervention > muiigisha 61 Messages postés lundi 25 septembre 2017Date d'inscription 6 décembre 2017 Dernière intervention - 4 déc. 2017 à 17:16
muiigisha 61 Messages postés lundi 25 septembre 2017Date d'inscription 6 décembre 2017 Dernière intervention - 5 déc. 2017 à 08:11
Merci, je jette un coup d'oeil
Commenter la réponse de f894009
f894009 12539 Messages postés dimanche 25 novembre 2007Date d'inscription 11 décembre 2017 Dernière intervention - 4 déc. 2017 à 17:24
+1
Utile
4
Re a vous deux,

Tout simplement Ucase
muiigisha 61 Messages postés lundi 25 septembre 2017Date d'inscription 6 décembre 2017 Dernière intervention - 4 déc. 2017 à 17:25
désolée mais quelle serait la syntaxe, svp?
f894009 12539 Messages postés dimanche 25 novembre 2007Date d'inscription 11 décembre 2017 Dernière intervention > muiigisha 61 Messages postés lundi 25 septembre 2017Date d'inscription 6 décembre 2017 Dernière intervention - 4 déc. 2017 à 17:32
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
muiigisha 61 Messages postés lundi 25 septembre 2017Date d'inscription 6 décembre 2017 Dernière intervention > f894009 12539 Messages postés dimanche 25 novembre 2007Date d'inscription 11 décembre 2017 Dernière intervention - 5 déc. 2017 à 16:00
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
muiigisha 61 Messages postés lundi 25 septembre 2017Date d'inscription 6 décembre 2017 Dernière intervention > muiigisha 61 Messages postés lundi 25 septembre 2017Date d'inscription 6 décembre 2017 Dernière intervention - 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
Commenter la réponse de f894009
jordane45 19201 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 10 décembre 2017 Dernière intervention - 4 déc. 2017 à 11:30
0
Utile
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")


Commenter la réponse de jordane45
muiigisha 61 Messages postés lundi 25 septembre 2017Date d'inscription 6 décembre 2017 Dernière intervention - Modifié par jordane45 le 4/12/2017 à 15:15
0
Utile
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
Commenter la réponse de muiigisha
muiigisha 61 Messages postés lundi 25 septembre 2017Date d'inscription 6 décembre 2017 Dernière intervention - 4 déc. 2017 à 14:48
0
Utile
Une question svp: est ce que l'instruction << ...like "*"&...&"*" >> est sensible à la casse?
Commenter la réponse de muiigisha