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 :

code pour derniere cellule [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut code pour derniere cellule
    Bonjour à tou(te)s

    Voici quelques jour Leforestier me proposait de changer mon code afin d'ignorer la version d'excel pour atteindre la dernière cellule, avec
    plutôt que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("a100000").End(xlUp).Row
    je viens justement d'essayer à des fins personnelles or le code de Leforestier (que je salue au passage et qui, j'espère, verra ce post) atteint toujours une cellule qui est toujours restée vierge.

    Je m'explique mieux :
    si le code est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    variable = .UsedRange.Rows.Count + 1
    .range("a" & variable) = "toto"
    admettons que des données soient écrites en A2, bien sur ce code permet d'atteindre A3 en lui donnant la valeur "toto"
    mais si A3 est ensuite effacé, ce meme code continue sur A4 alors que A3 est devenu vide
    ceci sans avoir mis quoique ce soit dans les autres colonnes
    Ai-je mal compris ?, ai-je fais une erreur ?, mais si j'ai raison, c'est bon à savoir
    J'espère déjà m'être assez bien expliqué

    Bonne journée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132

  3. #3
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour Kiki29,
    Merci, j'ai regardé mais pour la propriété UsedRange.Rows.Count, le problème reste le même. Je ne cherche pas à savoir comment atteindre la dernière ligne, pour ça je n'ai pas de problème mais j'ai été étonné par le résultat donné par UsedRange.Rows.Count alors que les cellules ont été effacées, c'est juste un constat

    Merci quand même,
    à tout hasard, je répète je suis sous excel 2007 mais le problème ne vient peut-etre pas de là

    Bonne journée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  4. #4
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    alors que les cellules ont été effacées
    , oui, mais comment ?

    Les « particularités » de certaines propriétés (comme UsedRange) ou comportement (poids des fichiers) d’Excel ont fait couler pas mal d’encre, notamment pour en signaler les dangers afin d’en limiter l’usage à des contextes précis…(et par rapport à CurrentRegion selon les cas)

    UsedRange a la particularité de conserver la trace de toutes les cellules qui ont été formatées, même vidées de leur contenu. Tu retrouves le même comportement avec : SpecialCells(xlCellTypeLastCell)..

    Met le code suivant dans un classeur vierge (si tu le sauves avant lancement de toto et après, tu verras la différence de poids pour un classeur d’apparence vierge déjà).

    Lance toto, puis toto2, 3, 4, 5 et vois les résultats
    Ensuite lances Toto 6 et testes ZClearContents, puis toto2
    Ensuite lances Toto 7 et testes ZClearContents, puis toto2, Zdelete ou Zclear puis toto2
    Etc….
    Bref, en jouant avec des formules et autres contextes, on peut découvrir d'autres règles de comportement...

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    Sub toto()
    Dim i As Integer
     
    Range("A1:A10000").Select
    With Selection
    .Borders(xlEdgeLeft).LineStyle = xlNone
    .Borders(xlEdgeTop).LineStyle = xlNone
    .Borders(xlEdgeBottom).LineStyle = xlNone
    .Borders(xlEdgeRight).LineStyle = xlNone
    End With
    End Sub
    Sub toto2()
     
    ActiveSheet.UsedRange.Select
    Debug.Print Selection.Rows.Count
    Debug.Print Feuil1.Cells(Rows.Count, 1).End(xlUp).Row
    End Sub
    Sub toto3()
    Range("A1").Select 'mieux en 1 ligne, mais moins explicite
    ActiveCell.CurrentRegion.Select
    Debug.Print Feuil1.Cells(Rows.Count, 1).End(xlUp).Row
    End Sub
    Sub toto4()
    Selection.SpecialCells(xlCellTypeLastCell).Select
    End Sub
    Sub toto5()
    Selection.SpecialCells(xlCellTypeBlanks).Select
    End Sub
     
    Sub Toto6()
    Dim i As Byte
     
    Columns("A:B").delete
    For i = 5 To 15
    Cells(i, 2) = i
    Next i
    End Sub
    Sub toto7()
    Dim i As Byte
     
    Columns("A:B").delete
    For i = 5 To 15
    With Cells(i, 2)
    .Value = i
    .Borders(xlEdgeLeft).LineStyle = xlContinuous
    .Borders(xlEdgeTop).LineStyle = xlContinuous
    .Borders(xlEdgeBottom).LineStyle = xlContinuous
    .Borders(xlEdgeRight).LineStyle = xlContinuous
    End With
    Next i
    End Sub
    Sub ZClearContents()
    Dim i As Byte
     
    Range(Cells(5, 2), Cells(15, 2)).ClearContents
    End Sub
     
    Sub Zdelete()
    Dim i As Byte
     
    Range(Cells(5, 2), Cells(15, 2)).delete
    End Sub
    Sub Zclear()
    Dim i As Byte
     
    Range(Cells(5, 2), Cells(15, 2)).clear
    End Sub
    cordialement,

    Didier

  5. #5
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Merci Didier,
    Je ne manquerai pas de faire le test car..depuis.....je suis occupé sur un autre problème plus concrêt, sur lequel je posterai si je ne trouve pas la solution seul comme un grand

    Mais encore merci car rien qu'à ta lecture je crois comprendre le problème, c'est pour cela que je vais mettre résolu

    Bonne soirée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

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

Discussions similaires

  1. code pour savoir si la cellule contient du texte ou du numérique
    Par veriecherie dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 13/03/2009, 15h26
  2. Code pour insérer plusieurs valeurs dans une cellule
    Par azerty1956 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/03/2009, 13h09
  3. Code pour copier des cellules si elles respectent une condition
    Par octane dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 14/11/2008, 06h53
  4. Code pour empêcher la modifcation d'une cellule
    Par gaefor dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/08/2007, 05h55
  5. [VBA-E] Boucle pour supression des dernieres cellules
    Par amd64 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/05/2006, 16h41

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