Macro balayage onglet et report information

vidou

XLDnaute Junior
Bonjour,
Tout d'abord une bonne année 2011 a tous !!!

Dans le fichier en PJ, on trouve 31 onglet dans lequel se trouve un tableau impayés SG et BNPP ( B26 à E31 & F26 à J31 )

Je voudrais donc creer une macro qui balaye l'ensemble des onglets 1 à 31 sur les plages citées et que des qu'on trouve une informations, on la reporte sur l'onglet impayés en y mettant dans la colonne date le N° de l'onglet.

J'espere avoir été assez clair et vous remercie par avance pour vos réponses.

Cordialement
 

Pièces jointes

  • analyse_nuit_novembre.zip
    35 KB · Affichages: 31
  • analyse_nuit_novembre.zip
    35 KB · Affichages: 30
  • analyse_nuit_novembre.zip
    35 KB · Affichages: 31

vidou

XLDnaute Junior
Re : Macro balayage onglet et report information

Bonjour,

Tout dépend du fichier ... on peut éventuellement se passer de macros ...

mais il semble que la compression du fichier n'a pas correctement fonctionné ...

A +
:)

Essayons celui la
 

Pièces jointes

  • analyse_nuit_novembre.zip
    40.9 KB · Affichages: 48
  • analyse_nuit_novembre.zip
    40.9 KB · Affichages: 41
  • analyse_nuit_novembre.zip
    40.9 KB · Affichages: 42

James007

XLDnaute Barbatruc
Re : Macro balayage onglet et report information

Bonjour Vidou :)

Tu peux tester le code suivant ... (avec tes données)
VB:
Sub Impayes()
Dim sh As Worksheet
Dim cel As Range
Dim der As Integer

'Nettoyer la plage qui contient les impayés
Sheets("Impayés").Range("A3:E100").ClearContents

    For Each sh In ActiveWorkbook.Worksheets
        'Dans la boucle, tester de 1 à 31 
        If sh.Index <= 31 Then
           
           For Each cel In sh.Range("B26:B31")
            'Dans la boucle, tester que les cellules ne soient pas vides
            If Not IsEmpty(cel) Then
                der = Sheets("Impayés").Cells(Cells.Rows.Count, "A").End(xlUp).Row + 1
                Sheets("Impayés").Range("A" & der) = sh.Name
                sh.Range(cel, cel.Offset(0, 3)).Copy Sheets("Impayés").Range("B" & der)
            End If
           Next cell
           
           For Each cel In sh.Range("F26:F31")
            If Not IsEmpty(cel) Then
                der = Sheets("Impayés").Cells(Cells.Rows.Count, "A").End(xlUp).Row + 1
                Sheets("Impayés").Range("A" & der) = sh.Name
                sh.Range(cel, cel.Offset(0, 3)).Copy Sheets("Impayés").Range("B" & der)
            End If
           Next cel
        
        End If
    Next sh
End Sub

A +
:)
 

vidou

XLDnaute Junior
Re : Macro balayage onglet et report information

Bonsoir,
Alors la merci, je suis vraiment loin de pouvoir faire ce type de code.
peut on modifier ce dernier pour que les données de la plage B26:b31 se copie dans l'onglet impayés de la colonne B,C,D et E avec le N° d'onglet dans la colonne A et les données de la plage F26:F31 se copie dans l'onglet impayés à la colonne G,H,I et J avec le N° d'onglet dans la colonne F

Vous remerciant par avance

Cordialement
 

James007

XLDnaute Barbatruc
Re : Macro balayage onglet et report information

Bonjour,

Si je comprends bien ... mais à tester tout de même ... avec des valeurs ...

VB:
Sub Impayes()
Dim sh As Worksheet
Dim cel As Range
Dim der As Integer

'Nettoyer la plage qui contient les impayés
Sheets("Impayés").Range("A3:E100").ClearContents

    For Each sh In ActiveWorkbook.Worksheets
        'Dans la boucle, tester de 1 à 31 
       If sh.Index <= 31 Then
           
           For Each cel In sh.Range("B26:B31")
            'Dans la boucle, tester que les cellules ne soient pas vides
           If Not IsEmpty(cel) Then
                der = Sheets("Impayés").Cells(Cells.Rows.Count, "A").End(xlUp).Row + 1
                Sheets("Impayés").Range("A" & der) = sh.Name
                sh.Range(cel, cel.Offset(0, 3)).Copy Sheets("Impayés").Range("B" & der)
            End If
           Next cell
           
           For Each cel In sh.Range("F26:F31")
            If Not IsEmpty(cel) Then
                der = Sheets("Impayés").Cells(Cells.Rows.Count, "F").End(xlUp).Row + 1
                Sheets("Impayés").Range("F" & der) = sh.Name
                sh.Range(cel, cel.Offset(0, 3)).Copy Sheets("Impayés").Range("G" & der)
            End If
           Next cel
        
        End If
    Next sh
End Sub

A +
:)
 

vidou

XLDnaute Junior
Re : Macro balayage onglet et report information

Bonsoir,

Merci bien c'est parfait, j'ai bien compris le debut de la macro mais est il possible de m'expliquer cela :

der = Sheets("Impayés").Cells(Cells.Rows.Count, "A").End(xlUp).Row + 1
Sheets("Impayés").Range("A" & der) = sh.Name
sh.Range(cel, cel.Offset(0, 3)).Copy Sheets("Impayés").Range("B" & der)


Vous remerciant

cordialement
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 393
Messages
2 088 006
Membres
103 697
dernier inscrit
BOUZOUALEGH