Code qui n'exécute pas

Résolu
muiigisha Messages postés 61 Statut Membre -  
muiigisha Messages postés 61 Statut Membre -
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

  1. thev Messages postés 2005 Date d'inscription   Statut Membre Dernière intervention   721
     
    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
    1. muiigisha Messages postés 61 Statut Membre
       
      Bonjour thev,
      c'est exactement des tableaux. Ok c'est noté
      0
  2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,
    Like
    sensible à la casse?
    Oui
    1
    1. muiigisha Messages postés 61 Statut Membre
       
      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
    2. muiigisha Messages postés 61 Statut Membre
       
      Merci, je jette un coup d'oeil
      0
  3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re a vous deux,

    Tout simplement Ucase
    1
    1. muiigisha Messages postés 61 Statut Membre
       
      désolée mais quelle serait la syntaxe, svp?
      0
      1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > muiigisha Messages postés 61 Statut Membre
         
        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
      2. muiigisha Messages postés 61 Statut Membre > f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention  
         
        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
      3. muiigisha Messages postés 61 Statut Membre > muiigisha Messages postés 61 Statut Membre
         
        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
  4. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. muiigisha Messages postés 61 Statut Membre
     
    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
  7. muiigisha Messages postés 61 Statut Membre
     
    Une question svp: est ce que l'instruction << ...like "*"&...&"*" >> est sensible à la casse?
    0