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 :

Compter les cellules [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
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2012
    Messages : 56
    Par défaut Compter les cellules
    Bonjour à tous,

    J'ai encore quelque difficulté avec le VBA et voilà pourquoi je vous sollicité.

    J'aimerai insérer une ligne ,dans un tableau, au milieu de la colonne "A" mais certaines cellules sont fusionnées. Il faut également savoir que j'aurai plusieurs feuilles excel avec des cellules fusionnées et c'est pour cela que j'aimerai créer une macro.


    J'ai alors trouvé un autre moyen : en comptant les cellules non vide avec la fonction Application.WorksheetFunction.CountA.
    Mais voilà la ligne n'est pas créer au bon endroit car il ne prend pas en compte le nombre de cellule mais le numéro de ligne.

    Vous trouverez ci-dessous le code ainsi que mon fichier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub compter()
     
    ws = Worksheet
     
    With ws
     
    X = Application.WorksheetFunction.CountA(Range("A1:A" & Range("A65536").End(xlUp).Row))
    Mil = Int(X / 2)
    Cells(Mil).Activate
    ActiveCell(Mil).Offset(1).Resize(1, 1).EntireRow.Insert
    ActiveCell(Mil).Value = "milieu"
    End With
    End Sub
    Sur le fichier, il y a une cellule en rouge et c'est à partir de la que je souhaite insérer une ligne.

    Merci pour vos réponses
    vba comptage.xlsx

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut

    Voila une solution, je n'ai pas trouvé plus simple

    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
    Option Explicit
     
    Sub compter()
    'Déclaration des variables
    Dim Ws As Worksheet
    Dim X As Long, Mil As Long, i  As Integer
    Dim TheCell As Range
     
    'Initialisation des variables
    'Si on manipule un objet (worksheet par exemple) il faut utiliser Set
    Set Ws = ThisWorkbook.Sheets("Feuil1")
     
    'Pour que With ... est une utilité, il faut ensuite placer des . devant les objet devant être complèter par l'objet spécifié par With (regarde l'aide)
    With Ws
        'Je retrancherais 1 pour tenir compte de l'entête de colonne
        X = Application.WorksheetFunction.CountA(.Range("A1", .Cells(.Rows.Count, "A").End(xlUp))) - 1
        Mil = Int(X / 2)
     
        'On pointe la cellule en haut de la colonne
        Set TheCell = .Range("A1")
     
        'On boucle sur les valeurs de 2 à Mil et on tient compte du nombre de cellules fusionnées
        For i = 2 To Mil
            'On regarde si la cellule fait partie d'un groupe de cellules
            Set TheCell = TheCell.Offset(TheCell.Offset(1).MergeArea.Count)
        Next
     
        'On ajoute une ligne a la suite
        TheCell.Offset(1).Insert
        'On ajoute le contenu
        TheCell.Offset(1).Value = "Milieu"
     
    End With
     
    End Sub
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2012
    Messages : 56
    Par défaut
    Bien joué, Bravo, Bravo

    J'ai juste changé :

    Pour que la ligne insérer se positionne en dessous de "mure" pour avoir le même nombre au dessus et en dessous de la ligne "Milieu".

    Merci encore.

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

Discussions similaires

  1. [VBA-E] Compter les cellules fusionnées
    Par Korleone dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/08/2017, 16h09
  2. Compter les cellules non vides
    Par Domino40 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/08/2009, 19h49
  3. [VBA-E]Compter les cellules...
    Par Korleone dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/04/2006, 18h52
  4. [EXCEL][VBA] Compter les cellules non-vides
    Par Squelet dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/02/2006, 15h40
  5. [VBA]Compter les cellules selon leurs couleurs...
    Par ronron1978 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 31/01/2006, 15h27

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