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 :

Regouper deux onglets


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 42
    Par défaut Regouper deux onglets
    Bonjour ,

    Après avoir galeré toute la journée d' hier , a copier et à coller à la main un

    fichier 2500 lignes , je comprend l'importance des macros...

    J'ai deux onglets à lier grace au numero et nom de l'entreprise se trouvant

    dans la colonne 1 et 2 ...le tout à mettre dans un troisiemme onglet..

    J'essaye le code suivant qui copie juste le premier ongelt sans rajouter les lignes de l'ongelt 2.

    Si quelqu'un à une idée?
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Sub report()
    Dim coltotal As Integer
    ColFin = Sheets("Feuil1").Range("IV1").End(xlToLeft).Column
    LigFin = Sheets("Feuil1").Range("A65536").End(xlUp).Row
    Sheets("Feuil1").Range(Cells(1, 1).Address, Cells(LigFin, ColFin - 1).Address).Copy Destination:=Sheets("Feuil3").Range("A1")
    colfin1 = Sheets("Feuil2").Range("IV1").End(xlToLeft).Column
    Sheets("Feuil2").Range(Cells(1, 3).Address, Cells(1, colfin1).Address).Copy Destination:=Sheets("Feuil3").Cells(1, ColFin)
     
    For n = 2 To Sheets("Feuil2").Range("A65536").End(xlUp).Row
      For m = 2 To Sheets("Feuil3").Range("A65536").End(xlUp).Row
       If Sheets("Feuil2").Range("A" & n) & Sheets("Feuil2").Range("B" & n) = Sheets("Feuil3").Range("A" & m) & Sheets("Feuil3").Range("B" & m) Then
          Sheets("Feuil2").Range(Cells(n, 3).Address, Cells(n, colfin1).Address).Copy Destination:=Sheets("Feuil3").Cells(m, ColFin)
          trouve = True
       End If
      Next m
      If trouve = False Then
        finf3 = Sheets("Feuil1").Range("A65536").End(xlUp).Row + 1
        Sheets("Feuil2").Range(Cells(n, 1).Address, Cells(n, 2).Address).Copy Destination:=Sheets("Feuil3").Cells(finf3, 1)
        Sheets("Feuil2").Range(Cells(n, 3).Address, Cells(n, colfin1).Address).Copy Destination:=Sheets("Feuil3").Cells(finf3, ColFin)
      End If
      trouve = False
    Next n
    coltotal = Sheets("Feuil3").Range("IV1").End(xlToLeft).Column
    For n = 2 To Sheets("Feuil3").Cells(65536, coltotal).End(xlUp).Row
     Cells(n, coltotal).Formula = "=SUM(C" & n & ":" & lettre(coltotal - 1) & n & ")"
    Next n
    End Sub
    Function lettre(nb As Integer)
    lettre = Left(Cells(1, nb).Address(0, 0), Len(Cells(1, nb).Address(0, 0)) - 1)
    End Function

  2. #2
    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
    Une proposition

    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 Report()
    Dim NbL As Long
    Dim NbC As Integer
     
    Application.ScreenUpdating = False
    With Sheets("Feuil3")
        .UsedRange.Clear
        Sheets("Feuil1").UsedRange.Copy .Range("A1")
        NbL = .UsedRange.Rows.Count + 1
        Sheets("Feuil2").UsedRange.Offset(1, 0).Copy .Range("A" & NbL)
        NbL = .UsedRange.Rows.Count + 1
        NbC = .UsedRange.Columns.Count
        .Range(.Cells(NbL, 1), .Cells(NbL, NbC)).FormulaR1C1 = "=SUM(R[" & 2 - NbL & "]C:R[-1]C)"
    End With
    End Sub

Discussions similaires

  1. Fusion deux onglets
    Par meliria dans le forum Excel
    Réponses: 1
    Dernier message: 22/02/2009, 21h40
  2. Réponses: 1
    Dernier message: 13/06/2007, 11h23
  3. Réponses: 5
    Dernier message: 28/07/2006, 15h33
  4. Regouper deux table et avoir la somme de chacune
    Par Fredri dans le forum Access
    Réponses: 8
    Dernier message: 11/01/2006, 17h21
  5. Impression de deux onglets à la fois
    Par auriolbeach dans le forum Access
    Réponses: 3
    Dernier message: 17/10/2005, 05h34

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