Excel - je comprends pas :-(

Résolu
Ophelie75 Messages postés 265 Statut Membre -  
Ophelie75 Messages postés 265 Statut Membre -
Bonjour,

Bonjour,

je ne comprends pas pourquoi ma macro ne fonctionne pas. En effet je l'ai déjà utilisé plusieurs fois dans d'autres fichiers et elle fonctionne très bien. Mais là elle ne se lance pas, aucune réaction. Je l'ai verifié des dizaines de fois je ne vois pas ce qui peut clocher. J'au beau appuyer sur RUN, aucune réaction, alors que normalement elle se lance correctement et commence le travail... Je ne comprends vraiment pas pourquoi... la voici

Sub Macro4()

For i = 4 To Cells(Rows.Count, 1).End(xlUp).Row
Sheets("Vente USA").Activate
Cells(i, 6).Select
Set check_data = Sheets("requet_temp").Columns(5).Find(What:=Cells(i, 6), LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False)
If Not check_data Is Nothing Then
Cells(i, 1).Value = "X"
Else

End If
Next i
Configuration: Windows XP
Internet Explorer 7.0

5 réponses

  1. Ivan-hoe Messages postés 433 Date d'inscription   Statut Membre Dernière intervention   310
     
    Bonjour,
    A l'ouverture du classeur qui contient ta macro, as-tu bien activé les macros ?
    Dans la feuille active au moment où tu lances ta macro, as-tu bien des valeurs au-delà de la ligne 4 dans la colonne A ?
    I.
    0
  2. Ophelie75 Messages postés 265 Statut Membre 19
     
    bonjour, ivan hoe

    Oui j'active bien les macros.

    Non je n'ai pas de valeur ds la colonne A, car c'est justement là que le macro va mettre des "X"

    Oph
    0
  3. Ivan-hoe Messages postés 433 Date d'inscription   Statut Membre Dernière intervention   310
     
    Alors il y a peut-être un souci à ce niveau-là :
    For i = 4 To Cells(Rows.Count, 1).End(xlUp).Row

    Si tu n'as pas de valeur dans la colonne A de la feuille active, alors Cells(Rows.Count, 1).End(xlUp).Row renvoie 1 et ta boucle For Next est interrompue tout de suite. A moins de préciser Step -1, tu ne peux pas avoir une borne fin inférieure à ta borne début.
    Tu n'es peut-être pas sur la bonne feuille quand tu lances ta macro.
    Quelle es la feuille dans laquelle tu comptes le nombre de lignes de 4 jusqu'à la fin ?
    I.
    0
  4. Ophelie75 Messages postés 265 Statut Membre 19
     
    MErci de ta réponse Ivan hoe,

    Effectivement, j'ai modifié cette ligne en remplacant "Cells(Rows.Count, 1).End(xlUp).Row" par le nombre exact de lignes de ma feuille (1766).

    Et la surprise, ca marche!!!

    Mais j'aimerais vraiment que tu m'expliques en language "debutant" ce que tu expose au dessus... ce la m'interesse de savoir...

    Merci en tout cas Ivan hoe!

    Ophé
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Ivan-hoe Messages postés 433 Date d'inscription   Statut Membre Dernière intervention   310
     
    Salut Ophé !
    même débutante, tu as dû comprendre que
    Cells(Rows.Count, 1).End(xlUp).Row

    te donne le numéro de la dernière ligne qui contient une valeur, dans la colonne A (la colonne 1)

    Si tu n'as que des cellules vides dans ta colonne A, alors cette expression te donne 1.
    Donc, c'est comme si tu écrivais
    For i = 4 To 1

    Tu fais une boucle avec i commençant à 4, incrémenté de +1 à chaque tour et qui se termine à 1. Ce n'est pas très logique, n'est-ce pas ?
    Du coup, ton programme passe directement à la ligne de code après Next i et rien ne se passe.

    Si ta macro a marché avec d'autres fichiers, c'est que la colonne A de la feuille active n'était pas vide au moment de l'exécution.
    I.
    0
    1. Ophelie75 Messages postés 265 Statut Membre 19
       
      d'accord,

      merci pour l'explication ivan hoe!

      Ophelie
      0