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 :

Accéder à une donnée dans une cellule fusionnée (par un cells)


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 70
    Points : 54
    Points
    54
    Par défaut Accéder à une donnée dans une cellule fusionnée (par un cells)
    Bonjour,
    Voilà j'explique mon souci!
    J'ai un classeur de 6 feuilles:
    - 1ere -> j'y choisis une date (mensuelle) grâce à une liste déroulante et on y trouve mes 4 macros!
    - 2eme -> il y a ma BDD au grand complet
    - 3eme -> il y a des données qui s'y mettent automatiquement grâce à la BDD et des diagrammes (c'est une gestion de stock pour savoir ce qui est absent au stock, dispo, etc)
    - 4eme -> un patron pour une impression de données
    - 5eme -> une fiche mensuelle qui me ressort la liste du matériel dont la viste au SAV a été faite lors du mois choisit dans l'index!
    - 6eme -> mes listes pour mes différentes listes déroulantes!

    Donc lorsque j'ai choisi ma date dans l'index je clique sur ma premiere macro qui me fait automatiquement la 5eme feuille donc ma mensuelle. Cela fonctionne très bien!
    Ensuite je clique sur ma deuxième macro qui elle met à jour la 4eme feuille! Jusque là pas de soucis la mise à jour se déroule bien!

    Ma feuille mensuelle:
    A B C
    Type Numéro Observation

    Toutes les données se mettent à jour toutes seules lorsque je clique sur ma macro mais lorsqu'elles s'incérent, je fusionne la cellule dans la colonne A par exemple s'il y a une télé avec le numéro 345 et une autre télé avec le numéro 523 alors par exemple A4 et A5 fusionne et il n'y est inscrit qu'une fois Télé dans le type!

    Le problème que je rencontre c'est que dans cette 4eme feuille j'y met des données de la 5eme (de la mensuelle)! Il y a un champs dans cette 5eme feuille qui compte en fait le nombre d'objet par type par exemple combien y a t il de télé , de lecteur dvd etc en sachant que la cellule dans laquelle est indiqué le type a été fusionnée comme il y en a plusieurs! Et c'est cela que je n'arrive pas à faire compter combien il y en a car voilà ce que j'ai fait:

    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
    cpt_typ = 1
        For i = 4 To lig_fin
     
            If (Sheets("MENSUELLE").Cells(i, 1) <> Sheets("MENSUELLE").Cells(i + 1, 1)) Then
     
                cpt_typ = cpt_typ
                Sheets("MAT1017").Cells(7, 2).Value = Sheets("MAT1017").Cells(7, 2).Value & vbLf & cpt_typ & Sheets("MENSUELLE").Cells(i, 1)
     
            Else
     
                cpt_typ = cpt_typ + 1
     
            End If
     
        Next i
    Le soucis c'est que en faisant ça et bien je ne peux pas lire par exemple la cellule A5 qui est fusionnée avec A4! Dans A4 il y a télé de marqué mais A5 n'est pas accessible! Je ne vois pas comment faire!!

  2. #2
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    bonjour,
    une idée à creuser:
    j'ai en A1 une cellule fusionnée jusqu'en D1 donc 4 colonnes. Je soustrais le numéro de la colonne de la cellule suivante ici E1 donc 5 au numéro de la colonne de ma cellule fusionnée ici 1. Résultat 4 voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub comter_nbr_cellule_fusionne()
    Dim nbitem As Integer
     
    If Range("A1").MergeCells = True Then
       nbitem = Range("A1").Offset(0, 1).Column - Range("A1").Column
       MsgBox nbitem
    End If
    End Sub
    essaye de l'adapter a tes besoins

  3. #3
    Expert éminent sénior


    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
    Points : 20 040
    Points
    20 040
    Par défaut
    tu pourrai utiliser le même principe que la :

    http://www.developpez.net/forums/d11...s/#post6155007

    je n'ai pas excel sous la main pour tester mais cela devrai donner (en partant de ton code) un truc du genre :

    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
    cpt_typ = 1
        For i = 4 To lig_fin
     
     
            If (Sheets("MENSUELLE").Cells(i, 1).MergeArea.Cells(1, 1) <> Sheets("MENSUELLE").Cells(i + 1, 1).MergeArea.Cells(1, 1)) Then
     
                cpt_typ = cpt_typ
                Sheets("MAT1017").Cells(7, 2).Value = Sheets("MAT1017").Cells(7, 2).Value & vbLf & cpt_typ & Sheets("MENSUELLE").Cells(i, 1).MergeArea.Cells(1, 1)
     
            Else
     
                cpt_typ = cpt_typ + 1
     
            End If
     
        Next i

  4. #4
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Bonjour,
    Merci bbil, je ne connaissais pas la propriété MergeArea effectivement elle convient bien.
    Vu que je n'arrive pas à dormir j'ai regardé le code de biddal d'un peu plus près et après avoir testé voici un code qui devrait le faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    For i = 4 To lig_fin
     'Donne au compteur le nombre de cellule fusionnée de la plage
     'Par exemple A4,A5 fusionnée ici cpt_typ = 2
     'Si A4 pas fusionnée ici cpt_typ = 1
      cpt_typ = Sheets("MENSUELLE").Cells(i, 1).MergeArea.Count
     
      Sheets("MAT1017").Cells(7, 2).Value = Sheets("MAT1017").Cells(7, 2).Value & vbLf & cpt_typ & Sheets("MENSUELLE").Cells(i, 1)
     
     'pour passer a la prochaine plage fusionné
      i = i + cpt_typ - 1
     
    Next i
    Au plaisir.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 70
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par rvtoulon Voir le message
    Bonjour,
    Merci bbil, je ne connaissais pas la propriété MergeArea effectivement elle convient bien.
    Vu que je n'arrive pas à dormir j'ai regardé le code de biddal d'un peu plus près et après avoir testé voici un code qui devrait le faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    For i = 4 To lig_fin
     'Donne au compteur le nombre de cellule fusionnée de la plage
     'Par exemple A4,A5 fusionnée ici cpt_typ = 2
     'Si A4 pas fusionnée ici cpt_typ = 1
      cpt_typ = Sheets("MENSUELLE").Cells(i, 1).MergeArea.Count
     
      Sheets("MAT1017").Cells(7, 2).Value = Sheets("MAT1017").Cells(7, 2).Value & vbLf & cpt_typ & Sheets("MENSUELLE").Cells(i, 1)
     
     'pour passer a la prochaine plage fusionné
      i = i + cpt_typ - 1
     
    Next i
    Au plaisir.
    Merci beaucoup pour ce but de code qui fonctionne nikel !!!
    Merci pour votre aide!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/03/2014, 12h05
  2. [WD16] Lecture donnée d'une base dans une valeur d'une autre base
    Par gef13 dans le forum WinDev
    Réponses: 2
    Dernier message: 16/11/2011, 09h05
  3. [AC-2003] insert des données d'une table dans une table d'une base externe
    Par marieo dans le forum VBA Access
    Réponses: 1
    Dernier message: 30/11/2009, 14h29
  4. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  5. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13

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