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 :

Trouver la dernière colonne occupée parmis plusieurs lignes sélectionnées [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 11
    Par défaut Trouver la dernière colonne occupée parmis plusieurs lignes sélectionnées
    Bonjour,

    Je m'aide régulièrement de ce forum mais cette fois-ci je ne trouve pas de solution... Alors je me lance dans mon premier post ici !

    Alors voilà : j'ai un immense tableau. J'ai une macro déjà en place qui m'a permis d'aller chercher 5 lignes d'en-tête de tableau ; et une seconde macro qui est allé chercher des tas de données à insérer sous cet en-tête.
    Je veux vérifier que j'ai le même nombre de colonnes d'en-tête et de colonnes de données. Si ce n'est pas le cas, je veux faire apparaitre un message d'erreur.

    J'insiste sur le fait que sur les cinq lignes d'en-tête, certaines ne sont que partiellement remplies. Si par exemple trois des lignes ont 6 colonnes, une en a 8, et la dernière en a 9, je veux que l'info qui en ressorte soit "l'en-tête a 9 colonnes".
    De plus, selon les données chargées par la marco déjà en place, ce n'est pas toujours la même ligne qui comporte le plus de colonnes. Je dois donc chercher mon info sur l'ensemble des cinq lignes.

    Je connais plusieurs manières de renvoyer le nombre de colonnes mais rien qui ne correspond ici...

    Voici ce que j'ai essayé...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub controle_nombre_colonnes()
     
        Dim Col As Integer
     
        Sheets("Structure").Select
     
        Col = Rows("10:14").Columns.Count
        Range("F4") = Col
     
    End Sub
    Bien entendu, ça ne marche pas... Ca me ramène dans la cellule F4 le nombre total de colonnes dans les lignes d'en-tête sur toooouuute la longueur de la feuille, en incluant les milliers de colonnes vides à droite du tableau... Alors que le résultat attendu est 18 dans mon cas.

    En espérant recevoir de l'aide...

    Rémy.

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub totogfg()
    Dim tabl(1 To 5) As Integer
    Dim i As Long, maxx As Long
    For i = 1 To 5
    tabl(i) = Sheets("Structure").Cells(i, Columns.Count).End(xlToLeft).Column
    Next i
    maxx = Application.max(tabl)
    MsgBox (maxx)
    End Sub
    Ou en fonction si tu préfères

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function totogfg(nb1 as integer, nb2 as integer)as integer
    Dim tabl(nb1 To nb2) As Integer
    Dim i As Long, maxx As Long
    For i = nb1 To nb2
    tabl(i) = Sheets("Structure").Cells(i, Columns.Count).End(xlToLeft).Column
    Next i
    maxx = Application.max(tabl)
    totogfg=maxx
    End function

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 11
    Par défaut
    Merci EngueEngue.

    Le code fonctionne, dans le sens où ça ne plante pas... Par contre le résultat que ton code renvoit est clairement faux. J'ai 18 colonnes, et là où mon code m'en trouve plus de 16k, le tien donne... 2 ! Bon ok, tu es plus près que moi de la bonne réponse... Mais quand même ! ^^'

    Han... En écrivant la réponse, j'ai l'impression d'avoir trouvé ce qui cloche...

    Quand tu déclare Dim tabl (1 to 5), tu considères que l'en-tête de mon tableau, dont je veux compter les colonnes, occupe les lignes 1 à 5 de ma feuille, non ?
    En fait il est plus bas... Et sur ces lignes, j'ai bel et bien des données sur 2 colonnes uniquement (c'est a dire le résultat renvoyé par ton code !)...

    Je teste ça en remplaçant par Dim tabl (10 to 14)...

    [EDIT]
    Bah ouais, ça fonctionne au poil !!!
    Merci encore !
    [/EDIT]

  4. #4
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    My fault, je comprends mieux ton

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Col = Rows("10:14").Columns.Count
    que je n'avais pas pigé...

    Bon courage

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 11
    Par défaut
    Plus besoin de courage, ça marche nickel ! ^^'
    Enfin... Il reste la suite de la macro a développer maintenant ! =)

  6. #6
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    en passant le tableau devrait rester à 1 to 5
    C'est la boucle qui change!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub totogfg()
    Dim tabl(1 To 5) As Integer
    Dim i As Long, maxx As Long
    For i = 10 To 14
    tabl(i) = Sheets("Structure").Cells(i, Columns.Count).End(xlToLeft).Column
    Next i
    maxx = Application.max(tabl)
    MsgBox (maxx)
    End Sub

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 13/01/2010, 06h42
  2. Dernière colonne remplie pour chaque ligne
    Par arnold95 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/05/2009, 12h28
  3. Réponses: 2
    Dernier message: 15/09/2008, 18h25
  4. comment trouver la dernière colonne vide ?
    Par Kankrela dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 11/09/2008, 10h48
  5. Trouver la dernière colonne saisie
    Par MAMANHOU dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 31/10/2007, 14h46

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