IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Fin de fichier


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de melodyyy
    Inscrit en
    Octobre 2006
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 401
    Par défaut Fin de fichier
    Voila j'ai un problème avec ma fin de fichier. Mon code marche super bien, mais dans mon fichier, quelqu'un a rajouter une colonne a formule plus bas que la ou je voudrais qui est la cellule ou est écrit "ne pas supprimer ces lignes".
    Pour l'instant mon code descend jusqu'a la dernière ligne occupé du fichier ce qui la me gene un peu. J'ai tenté une modification avec une boucle while mais VBA m'envoit pété il me met une autre ligne en erreur alors qu'elle marche bien.

    Voici mon code, je suis toujours preneuse d'idée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    Sub Bouton11950_QuandClic()
     
    'Déclaration des variables'
    Dim NumCol, derniereligneupit, ColonneRepere, DerLigne As Integer
    Dim sh As Worksheet
    DerLigne = derniereligneupit
    derniereligneupit = 17
    ColonneRepere = 28
     
    'Désactivation des filtres'
    Set sh = Workbooks("Synthese_type_01.xls").Worksheets("Feuille principale")
    If sh.FilterMode Then sh.ShowAllData
     
    'Arreter la boucle infinie'
    While Workbooks("Synthese_type_01.xls").Worksheets("Feuille principale").Cells(derniereligneupit, ColonneRepere) <> "Veuillez ne pas supprimer ces lignes "
     derniereligneupit = derniereligneupit + 1
            If derniereligneupit > 1000 Then
                MsgBox ("Arrêt du traitement: boucle infinie")
                    Exit Sub
                End If
            Wend
     
    'Définir la spécialité de la celulle, et jusqu'a quelle celulle il doit prendre le modèle'
    derniereligne = Range("IF567").SpecialCells(xlCellTypeLastCell).Row
     
    'De la colonne 36 à la 256'
    For NumCol = 36 To 256
     
    'Test si = dans cellule, sinon rien '
    If Left(Cells(20, NumCol).Formula, 1) = "=" Then
     
    'Balaie chaque cellule de la ligne 20 pour chaque colonne'
    Range(Cells(20, NumCol), Cells(derniereligne, NumCol)).FillDown
        End If
            Next NumCol
     
    End Sub
    Et donc je voudrais lui dire d'aller jusqu'a veuillez ne pas supprimer ces lignes, mais comme je disais quand j'ai tenté une boucle while il m'a mise en erreur sir la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Range(Cells(20, NumCol), Cells(derniereligne, NumCol)).FillDown

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Un peu de lexture, . Il y a la solution à ton pb. Tu dois connaître la "dernière ligne absolue de la colonne" qui t'intéresse et limiter ta boucle sur cette dernière ligne.
    A+

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    salut mélodyy
    et pourquoi ne pas
    rechercher la derniere ligne avant de parametrer ta boucle ( genre end(xldown))
    ou
    rechercher "la phrase ne pas effacer", determiner sa ligne et donc savoir ou arreter ta boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    find "nananinanere"
    deligne = naninanere -1
    for i = 17 ti naninanere
    d'ailleur tu le fais là, alors, j'ai du mal a comprendre
    derniereligne = Range("IF567").SpecialCells(xlCellTypeLastCell).Row

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    derniereligne = Range("IF567").SpecialCells(xlCellTypeLastCell).Row
    Donne la dernière ligne renseignée de la feuille.

    Pour avoir la dernière ligne de la colonne qui l'intéresse, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerniereLigne = Range("A65535").End(xlUp).Row
    Tu remplaces "A" par la bonne colonne
    A+

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    ça ne marchera pas dans son cas, si j'ai bien compris quelqu'un( mais mélodie est trop polie pour ça) quelqu'un donc a écris une ligne en dessous de "ne pas effacer ces ligne

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Oui, c'est bien ça, c'est idiot ! Faut supprimer cette phrase dans une cellule et la placer dans une zone de texte... ou peindre les lignes à ne pas effacer d'une autre couleur. Si je ne l'avais pas dit, je l'avais pensé, t'aurais dû le deviner

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    mais j'avais parfaitement deviné, et j'ai comme toi l'impression qu'en fait la macro se déroule jusqu'a cette fameuse ligne du dessous au lieu de s'arreter a "ne pas effacer cette ligne"
    peut etre que dans ce cas, si on fait un xlup, on pourrais remonter jusque "ne pas effacer non? a condition qu'il n'y ait qu'une seule ligne rajoutée par ce ( )

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fin de fichier .. ???
    Par blackhorus dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 07/04/2005, 13h32
  2. Apposer le caractere de fin de fichier.
    Par moldavi dans le forum Windows
    Réponses: 2
    Dernier message: 17/02/2005, 14h20
  3. "error : fin de fichier inattendue" en C++
    Par mateo.14 dans le forum MFC
    Réponses: 9
    Dernier message: 28/01/2005, 09h30
  4. Réponses: 4
    Dernier message: 07/12/2004, 08h11
  5. Lire de la 2eme ligne à la fin du fichier
    Par iamspacy dans le forum Linux
    Réponses: 3
    Dernier message: 03/05/2004, 13h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo