Eerreur d’exécution '1004' "la méthode 'Range' de l'objet _ Global a échoué

Résolu
bechirar Messages postés 3 Statut Membre -  
 HOMME -
Bonjour,

J'ai un message d'erreur erreur d’exécution '1004' "la méthode 'Range' de l'objet _ Global a échoué.

Helppp please !

Sub Test()

Dim x As Integer
Dim i As Integer
Dim j As Integer
Dim y As Integer
Dim c As Integer

x = Sheets("Feuil1").Range("A2").End(xlDown).Row
y = Sheets("Feuil3").Range("A2").End(xlDown).Row

y = y + 2
c = 69
With Sheets("Feuil1")

For j = 1 To y
For i = 2 To x

If Range(Chr(c), i).Value <> Range(Chr(c + 1), i).Value Then
Range(Chr(c + 2) & i).Value = "KO"
Range(Chr(c + 2) & i).Interior.Color = RGB(255, 0, 0)
Else:
Range(Chr(c + 2) & i).Value = "OK"
Range(Chr(c + 2) & i).Interior.Color = RGB(0, 255, 0)
End If
Next i
c = c + 3
Next j
End With
End Sub

Configuration: Windows / Chrome 79.0.3945.130

3 réponses

  1. pilas31 Messages postés 1878 Statut Contributeur 648
     
    Bonjour,

    Oui en incrémentant les lettres de colonnes on tombe sur une erreur car Chr(91) qui vient après Chr(90) qui est "Z" ce n'est pas une lettre mais le caractère "[" ce qui provoque l'erreur

    Donc la solution c'est d'utiliser les numéros de colonnes comme celà :

    Sub Test()
    
    Dim x As Integer
    Dim i As Integer
    Dim j As Integer
    Dim y As Integer
    Dim c As Integer
    
    
    x = Sheets("Feuil1").Range("A2").End(xlDown).Row
    y = Sheets("Feuil3").Range("A2").End(xlDown).Row
    
    Worksheets("Feuil1").Activate
    y = y + 2
    c = 5
    
    
    Dim F1 As Characters
    Dim F2 As Characters
    
    For j = 1 To y
        For i = 2 To x
            If Sheets("Feuil1").Cells(i, c).Value <> Sheets("Feuil1").Cells(i, c + 1).Value Then
                Sheets("Feuil1").Cells(i, c + 2).Value = "KO"
                Sheets("Feuil1").Cells(i, c + 2).Interior.Color = RGB(255, 0, 0)
            Else:
                Sheets("Feuil1").Cells(i, c + 2).Value = "OK"
                Sheets("Feuil1").Cells(i, c + 2).Interior.Color = RGB(0, 255, 0)
            End If
        Next i
        c = c + 3
    Next j
    
    End Sub


    Par contre on utilise que la Feuil1 je ne sais pas si c'est volontaire.

    1
    1. bechirar
       
      Bonjour,

      En exécutant la macro j'obtiens toujours des résultats "KO" sachant que je compare deux integer, mais la première ligne de la cellule est vide, la valeur est stocké dans la deuxième ligne de la cellule, je ne sais pas si c'est à cause de ça, il m'affiche toujours "KO" (même si les deux valeurs sont égaux).

      Si Oui, est-ce qu'il y a un moyen de supprimer la première ligne de chaque cellule à l'aide d'un macro ? Merci d'avance.
      0
      1. pilas31 Messages postés 1878 Statut Contributeur 648 > bechirar
         
        Bonjour,

        Jusqu’à présent je n'ai regardé que la syntaxe de la macro.
        Je n'ai pas cherché à comprendre le besoin .
        Ce qui me choque c'est qu'on utilise le nombre de lignes de Feuil3 (la valeur j) alors que dans la boucle jamais on ne fait référence aux valeurs de la Feuil3.
        Ce qui me semble logique c'est que l'on compare la liste de Feuil1 à la liste de Feuil3

        Par exemple on s'attend à ce que le test soit :

         If Sheets("Feuil1").Cells(i, c).Value <> Sheets("Feuil3").Cells(j, c + 1).Value Then



        Est-ce que ce n'est pas ça le problème ?

        Cordialement,
        0
      2. bechirar Messages postés 3 Statut Membre > pilas31 Messages postés 1878 Statut Contributeur
         
        Bonjour, Merci pour votre réponse rapide,

        J'utilise la feuille 3 juste pour récupérer le nombre des colonnes ( vu que le nombre des colonnes dans la feuille 1 égale au nombre des requêtes Sql stockés dans la feuille 3 ).

        Et finalement j'ai trouvé l'erreur, mais elle n'est pas dans la macro, merci.

        Bonne journée.
        0
    2. HOMME
       

      BONJOUR, 

      mon problème est au niveau de ma commande de la validation d'enregistrer mes information lors que je valide le message affiche "la méthode 'range' de l'objet_Worksheet a échoué: voici mes syntaxe:

      Private Sub CmdValider_Click()
        If MsgBox("souhaitez-vous valider ces informations ?", vbQuestion + vbYesNo, "STOCK") = vbNo Then Exit Sub

        'Mettre a ce niveau les controles de saisies qu'il faut

      Dim i As Long

          If AjoutModification = True Then
            i = Derligne(FeuilDonnéesAchats.Name)
          Else
            i = LigneAModifier
          End If

      VOICI LA OU LE PROBLEME SE POSE: 

          FeuilDonnéesArticles.Range("A" & i).Value = Me.TxCodeArticles.Value
            FeuilDonnéesArticles.Range("B" & i).Value = Me.TxLibelléArticle.Value  
             
            MsgBox "Vos informations ont été enregistrées avec succès!", vbInformation, "STOCK"
          
            Unload Me
         
      End Sub

      0