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 :

Macro pour fusionner cellules excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 85
    Par défaut Macro pour fusionner cellules excel
    Bonjour,

    je souhaite automatiser un fichier excel dont les données vont changer regulierement. Il y a trois collones sur lesquelles je souhaite fusionner les doublons (j'ai déja trié par odre alpha mes collones). Mes données sont des chaines de caractères et j'ai 1000 lignes dans mon tableau. le nombre de lignes est également suceptible de changer dans le prochain fichier auquel je devrais appliquer la macro.

    J'ai fais un code en utilisant une boucle while et une valeur boolean mais je suis bloqué. Je dois me planter au niveau des paramètres d'entrés ou bien j'oublie une variable. voila mon code(je débute dans VBA et ça doit se voir)

    Donc en premier je fais la lecture de mon tableau (pour la colloneA). Ensuite je fais ma boucle pour trouver quelles sont les données similaires et je fais l'affichage. Je sais bien qu'il me manque pas mal de choses dans mon code et j'ai vraiment besoin d'aide. Merci à vous si vous pouvez m'aider.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub saisieBTN(n As Integer)
     
    Dim vbtab2(2000) As String
    Dim i As Integer
    n = 2000
     
    Worksheets("SalesCredit").Activate
     
    For i = 1 To n
    vbtab2(i) = Range("a" & i).Value
    Next
     
    End Sub
    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
    Function fusion(n As Integer, vbtab2()) As Boolean
     
    Dim i As Integer
    Dim j As Integer
    Dim b As Boolean
    n = 2000
    b = False
     
    While i < n & j < n + 1 And b <> True
    If vbtab2(j).Value = vbtab2(i).Value Then
    b = True
    End If
    j = i + 1
    Wend
    fusion = b
     
    End Function
    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
    Sub AffichageBTN(n As Integer, vbtab2() As String)
    Dim i As Integer
     
    If fusion(n, vbtab2()) = True Then
    Range("a" & i).Select
    Selection.MergeCells = True
    End If
     
    End Sub
     
    sub PP()
     
    Call saisieBTN(n)
    Call AffichageBTN(n, vbtab2())
     
    end sub

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 85
    Par défaut
    merci patbou pour les tutaux! je suis en train de les lire mais si quelqu'un peut me faire des com sur mon code et me dire ce qu'il ne va pas ca serait sympa.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Par défaut
    pour verifier la declaration et l utilisation des variables

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    option explicit ' a placer a la 1ere ligne de ton module

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 85
    Par défaut
    Bon j'ai un autre problème.

    J'ai plusieurs colones , une avec des noms et l'autre avec des montants. Apres avoir fusionné trois noms identiques en une seule cellule je me retrouve avec trois montants correspondant à un nom.

    Ce que je veux faire:

    pour chaque nom, aller dans les cellules correspondantes et selectionner les montants, en faire la somme. Afficher cette somme à la place des montants( donc au final je dois me retrouver avec une somme dans une cellule au lieu de trois montants dans trois cellules).

    Merci

  6. #6
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    bonsoir derech

    la macro qui suit te permet de supprimer les doublon de la colonne A, d'aditionner les montants et de supprimer les cellules vides des colonne A et B.

    Je te conseille de supprimer les cellules plutôt que de fusionner.
    La fusion de cellules apporte souvent des désagréments.

    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
     
    Sub Test()
      'Recherche de la dernière ligne de la colonne A
      derli = Columns(1).Find("*", , , , , xlPrevious).Row
      ' boucle qui commence à la fin à cause des suppression de cellules
      For i = derli To 2 Step -1
        'Si la valeur de la cellule au dessus est égale à la valeur de la cellule (colonne A) alors
        If Cells(i, 1) = Cells(i - 1, 1) Then
          'on additionne les deux montants dans la cellule "B au-dessus"
          Cells(i - 1, 2) = Cells(i - 1, 2) + Cells(i, 2)
          'on supprime les cellules
          Range(Cells(i, 1), Cells(i, 2)).Delete Shift:=xlUp
        End If
      Next
    End Sub
    tiens nous au courant.

  7. #7
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 85
    Par défaut
    Merci beaucoup fred65200, c'est ce dont j'ai besoin mais il manque quelque chose dans le code en fait. Je m'explique

    Je dois additionner des montants dans 8 lignes différentes. Dans la colonne A j'ai des noms qui renvoient à des montants dans la colonne E mais également des noms qui renvoient à des montant dans la colonne J et ainsi de suite. Donc c'est un peu le bordel en fait. Je pense que je vais seulement faire des totaux globaux pour chaque collone de montant et pas de sous totaux a lintérieur.

    Merci pour votre aide.

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

Discussions similaires

  1. [XL-2007] Réalisation d'un macro pour fusionner des cellules sous conditions
    Par yannickcochard dans le forum Excel
    Réponses: 9
    Dernier message: 19/05/2015, 01h31
  2. macro pour automatiser tableau excel
    Par kameylia dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/05/2008, 00h03
  3. [VBA-E]Macro pour positionnement cellule
    Par Micky58 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 25/04/2007, 11h54
  4. [VBA-E] Macro pour tous fichiers Excel ?
    Par belfaigore dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/07/2006, 18h25
  5. [VBA-E] Macro pour copier cellules
    Par jfamiens dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 07/06/2006, 20h02

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