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 :

Connaitre le nombre total de colonnes dans tableurs ou les deux premieres lignes sont vides


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2018
    Messages : 37
    Points : 32
    Points
    32
    Par défaut Connaitre le nombre total de colonnes dans tableurs ou les deux premieres lignes sont vides
    Bonjour, malgrès mes recherches, je ne trouve aucun code qui me permet de connaitre le nombre de colonnes utilisées sachant que les deux premières lignes de chaque colonnes sont toujours vide.
    Merci de votre aide,
    Bonne journée

  2. #2
    Membre actif
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2016
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2016
    Messages : 184
    Points : 275
    Points
    275
    Par défaut
    Pour chaque ligne tu testes le null de chaque colonne ?
    En SQL c'est faisable avec rownum > 2 et tu testes chaque colonne.

    Donne un peu plus d'infos pour qu'on puisse t'aider.

    Cdt,

  3. #3
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UsedRange.Columns.Count
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2018
    Messages : 37
    Points : 32
    Points
    32
    Par défaut
    En fait j'ai un userform avec des cases à cocher dessus et j'aimerai que en fonction de ce qu'on a coché, mon programme copie les choses coché pour les coller dans une meme feuille je vous joint une partie de mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    If CheckBox11.Value = True Then
    NbCol = Worksheets("Affichage").UsedRange.Columns.Count
    ThisWorkbook.Worksheets("ClientCoverPrint").Range("A1:" & "B" & NbLigne).Copy Destination:=ThisWorkbook.Worksheets("Affichage").Cells(3, NbCol)
    Exit Sub
     
    End If
     
    If CheckBox2.Value = True Then
    NbCol = Worksheets("Affichage").UsedRange.Columns.Count
    ThisWorkbook.Worksheets("ClientCoverPrint").Range("C1:" & "C" & NbLigne).Copy Destination:=ThisWorkbook.Worksheets("Affichage").Cells(3, NbCol)
    End If
    Par exemple si le checkbox11 est coché, alors je vais coller sur la dernière colonne de la feuille Affichage des informations correspondant à l’élément checkbox11. Si le checbox2 est aussi coché alors je vais aussi copier ses informations sur la dernière colonne de ma feuille excel (donc normalment juste apres les informations collé du checkbox1). Mais le probleme c'est qu'il me colle tout sur la colonne 1 et donc par dessus les informations deja collé. Savez vous comment regler ce problème?
    Merci

  5. #5
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    En principe si la première ligne occupée est la troisième

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dim LaDernièreColonne as integer
     
    'Pour la dernière cellule occupée de la ligne 3
    LaDernièreColonne = activesheet.Range("c1").End(xlToRight).column
     
    'Pour la première cellule libre de la ligne 3
    LaDernièreColonne = activesheet.Range("c1").End(xlToRight).column + 1
    Mais, car il y a toujours un mais, ce n'est pas un truc à toute épreuve. De cette façon, tu retrouves la première cellule vide. Et si elle se trouve avant la fin de ta ligne, tu es mal pris.

    Si tu as sélectionné la dernière cellule de ta ligne(généralement, en VBA la sélection ne donne rien de plus, mais là, la sélection a un certain intérêt) et que tu n'as pas bougé ton curseur, tu peux travailler avec offset. (En fait on peut travailler avec Offset sans sélectionner; mais cela demande plus d'attention et de prudence au codage)
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  6. #6
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Citation Envoyé par clementmarcotte Voir le message
    En principe si la première ligne occupée est la troisième
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    '...
    LaDernièreColonne = activesheet.Range("c1").End(xlToRight).column
    C1 c'est plutôt la première ligne de la troisième colonne !

    Pour la dernière colonne de la ligne 3 (qui n'est pas forcement la dernière colonne utilisée, cf. la réponse de Menhir):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim LaDernièreColonne As Integer
    With ActiveSheet
      LaDernièreColonne = .Cells(3, .Columns.Count).End(xlToLeft).Column
    End With
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 364
    Points : 350
    Points
    350
    Par défaut
    Bonjour …
    Indépendamment d’un contexte précis, à tester dans la fenêtre des codes du formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim P As Range
    Private Sub UserForm_Initialize()
      'adapter le codename (pas le nom de l’onglet) de la feuille source :Feuil1, Feuil2 ...
      Set P = Feuil3.Range("A1:B" & Cells(Rows.Count, 1).End(xlUp).Row)
    End Sub
    Private Sub CheckBox1_Click()
      If CheckBox1 Then P.Copy Cells(3, Columns.Count).End(xlToLeft)(1, 2)
    End Sub
    Private Sub CheckBox2_Click()
      If CheckBox2 Then P.Copy Cells(3, Columns.Count).End(xlToLeft)(1, 2)
    End Sub
    Attention, cette proposition ne tient pas compte d'éventuelles cellules fusionnées !

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

Discussions similaires

  1. Nombre total de pages dans Print when expression
    Par cli16 dans le forum Jasper
    Réponses: 1
    Dernier message: 04/02/2009, 23h41
  2. Connaitre le nombre total de pages
    Par thor44 dans le forum Reports
    Réponses: 3
    Dernier message: 17/09/2008, 11h59
  3. Réponses: 2
    Dernier message: 23/04/2008, 15h24
  4. Nombre total d'enregistrement dans un Form
    Par pleasewait dans le forum Access
    Réponses: 2
    Dernier message: 28/12/2006, 16h53
  5. Total et s/total de colonne dans une requete
    Par Luc01 dans le forum Access
    Réponses: 9
    Dernier message: 02/01/2006, 11h43

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