Macro balayage onglet et report information

  • Initiateur de la discussion Initiateur de la discussion vidou
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

V

vidou

Guest
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

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

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 +
🙂
 
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
 
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 +
🙂
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

B
Réponses
0
Affichages
1 K
Bazev
B
C
Réponses
0
Affichages
2 K
C
Retour