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 :

[VBA-Exel] Adresse d'une cellule fusionnée


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Points : 3
    Points
    3
    Par défaut [VBA-Exel] Adresse d'une cellule fusionnée
    Bonjour,


    je possède des cellules fusionnées dans les colonnes et je souhaite tout simplement récupérer l'adresse de fin des cellules. Connaissez vous une commande simple ?

    Merci

  2. #2
    Membre régulier Avatar de biggione
    Inscrit en
    Juillet 2006
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 99
    Points : 91
    Points
    91
    Par défaut
    il y a un truc vraiment bien pour trouver des solutions pas trop complexes: l'enregistreur de macro.
    tu simule ce que tu voudrais faire puis après tu étudie le code.

    Sinon, pour ce qui est du fusionnage de case, si tu fusionne par exemple la case H10 avec H11, et admettons que tu veuilles selectionner la case que tu vient de fusionner tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Range("H10:H11").Select
    en fait ca se comporte comme sil resté 2 case distincte en vba.

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    En fait, quand deux cellules sont fusionnées, la valeur est seulement dans la première...et je suis pas censé savoir les adresses exactes de mes cellules. Mais j'ai réglé mon problème avec un .Row.Count

    Merci

  4. #4
    Membre régulier Avatar de biggione
    Inscrit en
    Juillet 2006
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 99
    Points : 91
    Points
    91
    Par défaut
    ok bonne jounée

  5. #5
    Candidat au Club
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    J'ai peut etre parlé un peu trop vite
    En fait j'ai une colonne A faite de plusieurs cellules fusionnées. J'aimerai passer de cellule en cellule, jusqu'à la dernière.
    Mais malheureusement, selection.value ne marche pas dans ce cas là.

  6. #6
    Membre régulier Avatar de biggione
    Inscrit en
    Juillet 2006
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 99
    Points : 91
    Points
    91
    Par défaut
    je ne comprend pas bien ce que tu veux vraiment faire remplir des valeurs ou juste savoir quelle est la dernière cellule fusionné de la colonne?

    sinon pour entrer des valeur dans une cellule fusionner:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    'selectionne la cellule "A2:A3" qui est une fusion de A2 avec A3
    Range("A2:A3").Select
    'entre la nouvelle valeur de la case
    ActiveCell.FormulaR1C1 = "3"

  7. #7
    Candidat au Club
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    J'ai un tableau avec des cellules fusionnées de longueur variables en colonne A. En colonne B, il y a des valeurs spéciales pour chaque cellule fusionnée correspondante.

    Ce que je veux faire c'est une boucle avec un test sur chaque cellule en colonne B correspondant à la cellule fusionnée en colonne A. Puis passer à la cellule fusionnée de dessous, et repeter ces tests sur les cellules en colonne B correspondantes.

    C'est pas trop facile à expliquer mais j'espère que tu as compris.

  8. #8
    Membre régulier Avatar de biggione
    Inscrit en
    Juillet 2006
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 99
    Points : 91
    Points
    91
    Par défaut
    dans la colonne B les cellules sont fusionné?

  9. #9
    Candidat au Club
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Non..Je t'ai fais un exemple :


    Et je dois m'arreter à la fin du tableau...

  10. #10
    Membre régulier Avatar de biggione
    Inscrit en
    Juillet 2006
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 99
    Points : 91
    Points
    91
    Par défaut
    je ne comprend pas bien ce que tu ve faire.
    il faudrait que tu me dise:
    - tu ve tester des cases dans la colonne B mais sont-elle fusionné ou non?
    - puis aprés que veux tu faire si ton test est true ou false?
    - et tu compare les cellule avec koi? une autre cellule ou une valeur?

    sinon en attendant ta réponse:
    ouvre un fichier excel vierge puis fusionne la case A1 avec la case A2 ensuite rentre les valeurs suivante:
    dans A1:A2 tu mets 1
    dans B1 tu mets 1
    puis copie ce code et étudie le peut etre suivant ce que tu veux réalisé il t'aidera:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim a1 As Range, a2 As Range
     
    For i = 1 To 100
       u = i + 1
       Set a1 = Range("B" & i)
       Set a2 = Range("B" & u)
       Range("a1:a2").Select
       'il existe bien des facon de tester, celle-ci dessous risque de ne servir a rien suivant ce que tu veux faire après...
       ActiveCell.FormulaR1C1 = "=IF(R[1]C[-1]=R[1]C[1],2,3)"
    Next i

  11. #11
    Membre régulier Avatar de biggione
    Inscrit en
    Juillet 2006
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 99
    Points : 91
    Points
    91
    Par défaut
    ok je vien de voir ton screen, en fait tu ve tou simplement lancer un test avec une boucle et l'arreter a la fin de la derniere cellule coller a la cellule fusion puis tu le recommencera pour toute les cellule de B qui sont coller le long de la cellule fusionner après. c'est ca?

  12. #12
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    peux pas accéder a l'exemple de mon boulot, proxy pas content

    tu peux joindre un fichier xls ou zip stp ? juste pour qu'on puisse voir l'allure de ta feuille ?

  13. #13
    Membre régulier Avatar de biggione
    Inscrit en
    Juillet 2006
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 99
    Points : 91
    Points
    91
    Par défaut
    je crois avoir une idée pour toi:
    si tes cellule de la colonne A s'appelle toute admettons cel1,cel2,...,celn

    tu pourrais essayer de tester le nom de la case dans A coller à celle dans B
    avec par exemple un: right(cellule ou tu es en B,cellule en A, 1)
    ca te sors le numero de la case fusionnée
    ensuite tu le stock et tant que ce numero ne change pas tu effectue ton test sur les case de la colonne B
    ensuite dés qu'il change, tu recommence avec le test qui concerne la case fusionner suivante

    tu vois ce que je ve dire?

  14. #14
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    un truc a savoir sur les cellules fusionnées:
    le fait de fusionner 3 cellules ne fait que masquer les 2 suivantes pour ne laisser apparaître que la valeur de la première. Rien n'empêche en VBA de tester la valeur d'une cellule faisant partie de la fusion.

  15. #15
    Candidat au Club
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Désolé je n'ai pas pu répondre avant...
    J'ai mis un .zip en pièce jointe pour exemple, le .xls ne passant pas

    Donc oui biggione tu a tout à fait compris. En fait, au départ de ma fonction j'ai 2 villes. Je dois déterminer leur pays. Pour celà, je voulais à partir d'un pays en colonne A, effectuer une boucle dans la colonne B pour faire mes tests, puis passer à l'autre pays (donc la cellule fusionnée suivante).
    En résultat, je dois bien sur retourner le ou les pays d'appartenance.

    Mais Commodore_Psykopate, si je fais sur mon exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("B4").select
    Selection.offset(0,-1).value
    La valeur sera égale à nulle...
    Fichiers attachés Fichiers attachés

  16. #16
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    essaye ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Sub test()
    i = 0
    While Range("b4").Offset(i, -1).Value = Empty
        i = i - 1
    Wend
     
    Range("H10") = Range("b4").Offset(i, -1).Value
     
     
    End Sub
    en H10 il t'affichera la valeur correspondante à la cellule B4.

  17. #17
    Candidat au Club
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    C'est une solution en effet...Je pensais plutôt faire une boucle pour chaque pays, testant les villes, mais avec ta solution je fais une boucle sur toutes les villes, récupérant les pays par la suite.

    Je vais voir si mon code tourne bien avec ça, merci !

  18. #18
    Membre régulier Avatar de biggione
    Inscrit en
    Juillet 2006
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 99
    Points : 91
    Points
    91
    Par défaut
    alors ca marche ou pas?

    Pensez à mettre Résolu si c ok...

Discussions similaires

  1. Réponses: 15
    Dernier message: 20/05/2015, 13h23
  2. Pointer sur une cellule fusionnée en Vba Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 56
    Dernier message: 03/02/2009, 11h48
  3. [VBA-E]récupérer l'adresse d'une cellule
    Par julyBL dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/06/2006, 19h29
  4. [VBA-E]contenu d'une cellule gestion erreur macro
    Par matou_aouh dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/03/2006, 10h18
  5. vba excel - Comment saisir une cellule sans faire entrer
    Par brethomeau dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 15/11/2005, 17h50

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