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

Résolu/Fermé
bechirar Messages postés 3 Date d'inscription jeudi 6 février 2020 Statut Membre Dernière intervention 13 février 2020 - 6 févr. 2020 à 11:32
 HOMME - 9 avril 2024 à 00:16
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

pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 642
6 févr. 2020 à 15:45
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
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
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 642 > bechirar
Modifié le 13 févr. 2020 à 11:34
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
bechirar Messages postés 3 Date d'inscription jeudi 6 février 2020 Statut Membre Dernière intervention 13 février 2020 > pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020
13 févr. 2020 à 11:38
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

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