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 positionnement d'une cellule fusionnée


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut Connaitre le positionnement d'une cellule fusionnée
    Bonjour,

    J'ai un feuille avec des cellules fusionnées, pour les reconnaitre, j'utilise le code de Silkyroad :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Sub VisualiserCellulesFusionnees()
    Dim Cell As Range
     
    'Boucle sur les cellules utilisées dans la feuille
    For Each Cell In Worksheets("Feuil1").UsedRange.Cells
        'Si la cellule est fusionnée
        'Colorie en jaune si la cellule est fusionnée
        If Cell.MergeCells Then Cell.MergeArea.Interior.ColorIndex = 6
    Next Cell
    End Sub
    Je cherche à connaitre les coordonnées de la cellule suivante :

    Admettons que la cellule fusionnée soit A1:A3, il faudrait que le code me donne comme résultat : A4 ou cells(1,4)

    En fait, j'ai ~500 fiches, toutes n'ont pas le même format, mais par contre, elles ont toutes les mêmes choses : Nom, date, ville, etc.....

    Donc, j'ai commencé en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Sub VisualiserCellulesFusionnees()
    Dim Cell As Range
     
    'Boucle sur les cellules utilisées dans la feuille
    For Each Cell In Worksheets("Feuil1").UsedRange.Cells
        if Cell = "Nom" then
    et c'est là où je coince, je ne vois pas quoi mettre après le "Then", je n'arrive pas à récupérer la position de "Cell"...


    Merci,
    A+

  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
    Par défaut
    Salut, voir avec et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Split(Cell.MergeArea.Address, ":")(1)
    et qqch comme ceci au final
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print Split(Split(Cell.MergeArea.Address, ":")(0), "$")(1) & Split(Split(Cell.MergeArea.Address, ":")(1), "$")(2) + 1
    avec au choix 0/1 pour la cellule que tu considères comme étant la suivante, dans le cas d'une plage D13:G28 par exemple qui retournera D29 ou G29

  3. #3
    Membre Expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 475
    Par défaut
    Bonjour,

    Te retourver juste derrière les cellules fusionnées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cell.MergeCells Then Cells(Range(Split(Cell.MergeArea.Address, ":")(1)).Row, Range(Split(Cell.MergeArea.Address, ":")(1)).Column + 1).Activate
    Voir aussi

    http://www.developpez.net/forums/d57...es-fusionnees/

  4. #4
    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
    Par défaut
    Re, pour une plage nommée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Option Explicit
     
    Sub Tst()
    Dim NomCell As Excel.Name
    Dim sNom As String
        sNom = "Nom"
        For Each NomCell In ThisWorkbook.Names
            If NomCell.Name = sNom Then
                Range(sNom).Offset(1, 0).Activate
            End If
        Next NomCell
    End Sub
    PS : je viens de me rendre qu'il y avait plus concis, juste avant le post implacable de Mercatog et je corrige en conséquence

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Admettons que la cellule fusionnée soit A1:A3, il faudrait que le code me donne comme résultat : A4 ou cells(1,4)
    pour colorier en rouge la cellule juste en dessous des cellules fusionnées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub ColorAfterMergedCells()
    Dim c As Range
     
    For Each c In Worksheets("Feuil1").UsedRange
        If c.MergeCells Then c.MergeArea.Offset(1, 0).Interior.Color = 255
    Next c
    End Sub

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    Merci kiki29,
    Merci QuestVba,
    Merci mercatog,

    Je vous remercie pour votre aide, grâce à vous, j'ai fait une "compil" de vos codes et j'ai obtenu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Tst()
     
    Dim c As Range
     
     Dim n(30)
     
    For Each c In Worksheets("Temp").UsedRange
        If c = "Nom" Then n(1) = c.MergeArea.Offset(0, 1)
        If c = "Ville" Then n(2) = c.MergeArea.Offset(0, 1)
    Next c
    End Sub
    Qui fonctionne très bien !!!

    (car j'avais des cellules fusionnées, d'autres non.....)

    merci pour votre aide et à bientôt pour de prochaines aventures....

    A+

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

Discussions similaires

  1. Ajuster automatiquement la hauteur de ligne d'une cellule fusionné
    Par xvrpetit dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/08/2013, 08h29
  2. Connaitre la valeur d'une cellule dans une datagrid
    Par Sargon dans le forum Windows Forms
    Réponses: 4
    Dernier message: 16/08/2007, 14h35
  3. positionnement dans une cellule
    Par anisr dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/11/2006, 17h00
  4. [VBA-Exel] Adresse d'une cellule fusionnée
    Par gloll dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 03/08/2006, 09h25
  5. Connaitre la taille d'une cellule
    Par LSG-Serval dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 11/05/2006, 21h44

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