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 :

[excel]Récupérer la dère ligne ou autre..


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 258
    Par défaut [excel]Récupérer la dère ligne ou autre..
    bonjour,

    Je voudrais qu'à partir d un tableau excel dont je ne connais pas la taille pouvoir a l aide d une macro faire en sorte de modifier la largeur des cellules et pour certaines colonnes centrer le contenu.
    J'ai le début de la solution, puisqu'en enregistrant une macro et en selectionnnant le nom des champs je peux modifier la largeur des cellules.
    Le pb se pose pour centrer le contenu de certaines colonnes (ce sera tjs les memes colonnes). Effectivement, pour pouvoir centrer le contenu des cellules de ces colonnes il faut sélectionner toutes les cellules et puis avec des clics ordonner le centrement. Le probleme est qu'il faaut connaitre la dèrniere ligne sélectionnée pour pouvoir effectuer ce centrement.

    Voici le code généré: (si vous pensez que je fais fausse route signalez le merci)
    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
    Sub macroLargeur()
    '
    ' macroLargeur Macro
    ' Macro enregistrée le 25/07/2006 par 
    '
        Columns("B:B").ColumnWidth = 33.57
        Columns("A:A").ColumnWidth = 15.57
        ActiveWindow.SmallScroll Down:=51
        Columns("C:C").ColumnWidth = 14.14
    ' il faut selectionner la dere cellule ( en ordonnée ie le N° de ligne)
    ' ou il y a qqch d'ecrit dedans
        Range("C1:C67").Select
        Range("C67").Activate
        With Selection
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlBottom
            .WrapText = False
            .Orientation = 0
            .AddIndent = False
            .ShrinkToFit = False
            .MergeCells = False
        End With
    End Sub

  2. #2
    Membre émérite
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Par défaut
    Bonjour,

    Il n'y a pas forcément besoin de connaître le numéro de la dernière ligne pour sélectionner une colonne entière ...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("C:C").HorizontalAlignment = xlCenter
    Essaie ce code

    +

    Théo

  3. #3
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    juste une chose est-ce génant de centrer des cellules vides ..? ou j'ai pas compris ce que tu voulais centrer...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    columns("C").HorizontalAlignment = xlCenter

  4. #4
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 258
    Par défaut
    non ce n'est pas genant de centrer des cellules vides c'est juste que si mon tablaeu fait 300 lignes et que je veuille centrer 2 colonnes je voudrais pas que ma macro centre 2 colonnes mais sur 10 000 lignes (ou qqch du style qui ferait perdre du temps à l'utilisateur, peut etre ce que j 'ecris est il encore impertinent en VB)
    Sinon le code fourni fonctionne merci!

  5. #5
    Membre émérite
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Par défaut
    Citation Envoyé par kenny49
    non ce n'est pas genant de centrer des cellules vides c'est juste que si mon tablaeu fait 300 lignes et que je veuille centrer 2 colonnes je voudrais pas que ma macro centre 2 colonnes mais sur 10 000 lignes (ou qqch du style qui ferait perdre du temps à l'utilisateur, peut etre ce que j 'ecris est il encore impertinent en VB)
    Sinon le code fourni fonctionne merci!
    Quand tu le fais manuellement cela se fait presque intentanément donc par le code c'est la même chose ... C'est seulement si tu faisais un traitement cellule par cellule que cela prendrait plus de temps (même chose manuellement)

    +

    Théo

    PS : si cela te convient, un petit clic sur le tag et ce sera nickel

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    Hello,

    tu peux tout centrer les 65000 lignes ca ira aussi vite que 300 (enfin ptet que ca met 0,01 sec de plus )

    sinon pour connaitre la derniere ligne si ca peut te servir ailleurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sheets(1).Select
    [A6].Select
    DerniereLigne = Selection.End(xlDown).Row

  7. #7
    Membre émérite
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Par défaut
    Citation Envoyé par Elstak
    Hello,

    tu peux tout centrer les 65000 lignes ca ira aussi vite que 300 (enfin ptet que ca met 0,01 sec de plus )

    sinon pour connaitre la derniere ligne si ca peut te servir ailleurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sheets(1).Select
    [A6].Select
    DerniereLigne = Selection.End(xlDown).Row
    La solution que nous avons donné, bbil et moi-même, le fait en faisant directement le traitement de la colonne et sans nécessité de faire la sélection de toutes les cellules...

  8. #8
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 258
    Par défaut
    oui, j'allais y venir:

    j' ai écrit un script qui permet de faire une insertion de lignes vierges une ligne sur 2 ( au debut on a un fichier excel qui a x lignes, a la fin on a ce meme fichier avec 2*x lignes dont x vierges)

    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
     
    Sub MacroInsertion()
    '
    ' on selectionnera à la derniere ligne la premiere cellule
     
    Dim ZtNumLig As Integer
    Dim ZtDerCol As Integer
    Dim i
    Dim j
    ' ZtnumLig correspond a la dere ligne du fichier (celle dont l'utilisateur a selectionné une cellule)
    ZtNumLig = ActiveCell.Row
    ZtDerCol = ActiveCell.SpecialCells(xlCellTypeLastCell).Column
    i = -1
    Application.ScreenUpdating = False
    For j = 1 To ZtNumLig
    i = i + 1
    Cells(j + i, 1).EntireRow.Insert
    Next j
    ActiveCell.Range("A2").Select
    End Sub
    Comment faire en sorte que l'utilisateur n'est meme pas besoin de selectionner une cellule pour executer la macro?

    Est ce que remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ZtNumLig = ActiveCell.Row
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ZtNumLig =Selection.End(xlDown).Row
    fonctionnerait?

    Merci d'avance

  9. #9
    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
    Comment faire en sorte que l'utilisateur n'est meme pas besoin de selectionner une cellule pour executer la macro?
    Je pense que tu veux dire "... n'ait pas besoin de selectionner la dernière cellule de la colonne" ?

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    Si tu mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ZtNumLig =Selection.End(xlDown).Row
    tu auras la derniere ligne de la zone de ta cellule active.
    si c'est toujours la meme cellule tu peux la selectionner avant comme ca l'utilisateur n'aura pas à le faire


    par exemple...

    fais des test et tu verra ce que ca donne

  11. #11
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 258
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ZtNumLig = Selection.End(xlDown).Row
    fonctionne.

    Merci et à +

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

Discussions similaires

  1. Vba Excel - Récupérer le nombre de lignes remplies
    Par toinou62 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/03/2009, 12h54
  2. Réponses: 1
    Dernier message: 21/01/2009, 17h44
  3. Problème EXCEL : Récupérer la ligne d'une cellule active
    Par Kok1k1du dans le forum C++Builder
    Réponses: 10
    Dernier message: 17/11/2008, 12h04
  4. Récupérer la dernière ligne de mon classeur Excel
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/05/2007, 08h53
  5. [VBA-Excel] Récupérer la ligne d'un élément de la listview sélectionné
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 20/12/2006, 14h17

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