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 :

programmer un fusionnage de cellules lors de l'insert automatique de ligne


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
    Ingénieur qualité méthodes
    Inscrit en
    Juin 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Juin 2014
    Messages : 21
    Par défaut programmer un fusionnage de cellules lors de l'insert automatique de ligne
    bonjour a tous

    je suis novice en VBA, et me voila confronter a un probleme que je ne comprend pas

    je cree un tableaux excel en fonction de donnée récoltés via un userform.
    a partir d'une des donnée recoltée, je recherche la bonne position dans le tableau et insère une nouvelle ligne dans laquelle je colle mes les nouvelles informations.
    cette nouvelle ligne peut se situer n'importe ou dans le tableau.
    jusqu’à la je n'est pas de souci.

    mais voila, certaines colonne doivent être fusionnées.
    j'utilise donc la formule suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("h29", "i29").Offset(j).Merge
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("k29:o29").Offset(j).Merge
    j étant la position où la ligne doit être insérer.
    ceci fonctionne lorsque que la ligne se trouve tout en haut du tableau, soit j=0
    mais des que ce n'est plus le cas, la fusion des cellules ne fonctionne plus.

    j'ai essayer d'autre manière, en sélection les cellule préalablement, en utilisant .mergecell=true...

    mais je ne trouve pas la solution

    j’apprécierai un peu d'aide car je bloque

    merci à vous

  2. #2
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour yann26

    Regarde ce que retourne Range("h29", "i29").Offset(j).Address

    et tu vas comprendre pourquoi le Merge ne peut pas fonctionner.

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juin 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Juin 2014
    Messages : 21
    Par défaut
    re bonjour et merci pour votre réactivité

    c'est à dire? qu'entendez vous pas "regarde ce que retourne" ?
    la formule utilisé dans le range n'est pas correct?

    ça ne pourra jamais fonctionner ou il y a une solution?

    pourtant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("k29:o29").Offset(j).Merge
    ne fonctionne pas non plus.

  4. #4
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Il y a plusieurs façons de voir la valeur d'une propriété (ici la propriété Address).
    La plus simple étant de la mettre dans une cellule:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1").value = Range("h29", "i29").Offset(j).Address
    Une solution : Remplacer Offset par Resize

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1").value = Range("h29", "i29").Resize(j).Address

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juin 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Juin 2014
    Messages : 21
    Par défaut
    OK, merci pour l'info

    voici ce que j'essai dans un petit programme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub essai()
    j = 5
    Range("a1").Value = Range("h29", "i29").Offset(j).Address
    Range("a2").Value = Range("h29", "i29").Resize(j).Address
    Range("d2", "e2").Offset(j).Merge
    Range("d8", "e8").Resize(j).Merge
    End Sub
    le resultat est le suivant A1= $H$34:$I$34
    A2 = $H$29:$I$33
    D7 et E7 ont fusionnées
    D8 a E12 ont fusionnées

    de cet essai j'en conclue que ma formule n'est pas si mal que ca

    j'ai essayé dans mon programme, avec le offset, la valeur renvoyée varie (des fois une cellule, des fois les deux), ca a l'aire de varier en fonction de l'une des info que je rentre dans un combobox auparavant. cela dit, quelque soit la valeur renvoyée les cellule ne fusionnent pas.

    Cela dit, votre réponse m'a permis de trouver une solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("h29").Offset(j).Resize(1, 2).Merge
    Range("k29").Offset(j).Resize(1, 5).Merge
    ceci fonctionne

    merci pour votre aide

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 25/04/2015, 17h37
  2. Erreur lors de l'insertion d'une ligne (table avec relation 1-0)
    Par abbepierre94 dans le forum Silverlight
    Réponses: 9
    Dernier message: 10/01/2011, 13h34
  3. [XL-2003] Lors de l'insertion d'une ligne ne pas modifier les lignes de calcul
    Par peofofo dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/02/2010, 01h18
  4. Réponses: 2
    Dernier message: 15/11/2007, 18h43
  5. Réponses: 15
    Dernier message: 26/12/2006, 17h27

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