Consolider des onglets, macro de J.BOISGONTIER....

Christian0258

XLDnaute Accro
Bonsoir à tout le forum,

Je souhaiterais votre aide afin de modifier cette macro:

pouvoir exclure certains *onglets du traitement ; *nommés Commande et Mail

Sub consolide_onglets()
Sheets("base").[A1].CurrentRegion.Offset(1, 0).Clear
For s = 2 To Sheets.Count
Range(Sheets(s).[A2], Sheets(s).[A65000].End(xlUp).End(xlToRight)).Copy _
[A65000].End(xlUp).Offset(1, 0)
Next s
On Error Resume Next
[A:A].SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

Merci pour le temps que vous voudrez bien m'accorder.

Bien amicalement,
Christian
 

ERIC S

XLDnaute Barbatruc
Re : Consolider des onglets, macro de J.BOISGONTIER....

Bonjour

sans plus de précision peut-être en insérant une ligne après For s = 2 To Sheets.Count

if not sheets(i).name="Commande" and not sheets(i).name="Mail") then

et ensuite juste avant la ligne next s, ajouter end if
 

Christian0258

XLDnaute Accro
Re : Consolider des onglets, macro de J.BOISGONTIER....

Re, le forum, Eric,

Merci pour ton aide, ce qui donne cette macro :

Sub consolide_onglets()
Sheets("base").[A1].CurrentRegion.Offset(1, 0).Clear
For s = 2 To Sheets.Count
If Not Sheets(i).Name = "Commande" And Not Sheets(i).Name = "Demande Achats" Then
Range(Sheets(s).[A2], Sheets(s).[A65000].End(xlUp).End(xlToRight)).Copy _
[A65000].End(xlUp).Offset(1, 0)
End If
Next s
On Error Resume Next
[A:A].SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

mais ça plante ; l'indice n'appartient pas à la sélection

à vous lire,
Bien amicalement,
Christian
 

laurent950

XLDnaute Accro
Re : Consolider des onglets, macro de J.BOISGONTIER....

Bonsoir,

C'est pas un i mais un s ?
Sheets(s).Name

Lorsque vous compter de :
For s = 2 To Sheets.Count

C'est a dire S commence à 2 mais en faite "Sheets.Count" commence à 0 donc vous ne compter pas les 2 premiéres feuilles

ce serais plutôt
For s = 0 To Sheets.Count

pour compter l'intégralité des feuilles.

Soit :

VB:
Sub consolide_onglets()
 Sheets("base").[A1].CurrentRegion.Offset(1, 0).Clear
 For s = 0 To Sheets.Count
 If Not Sheets(s).Name = "Commande" And Not Sheets(i).Name = "Demande Achats" Then
 Range(Sheets(s).[A2], Sheets(s).[A65000].End(xlUp).End(xlToRight)).Copy _
 [A65000].End(xlUp).Offset(1, 0)
 End If
 Next s
 On Error Resume Next
 [A:A].SpecialCells(xlCellTypeBlanks).EntireRow.Delete
 End Sub

Laurent
 
Dernière édition:

Christian0258

XLDnaute Accro
Re : Consolider des onglets, macro de J.BOISGONTIER....

Re, le forum, Laurent,

Merci, Laurent, pour ton aide. J'ai copieé ta macro mais ça plante ;

l'indice n'appartient pas à la sélection
If Not Sheets(s).Name = "Commande" And Not Sheets(i).Name = "Demande Achats" Then

Merci pour votre aide.

Bien à vous,
Christian
 
C

Compte Supprimé 979

Guest
Re : Consolider des onglets, macro de J.BOISGONTIER....

Bonjour le fil

C'est pour ce genre d'erreur que je conseille toujours d'utiliser : Option Explicit
et de définir ces variables

If Not Sheets(s).Name = "Commande" And Not Sheets(i).Name = "Demande Achats" Then

Il faut dans les 2 cas utiliser "
s" et non "i"

A+
 

ERIC S

XLDnaute Barbatruc
Re : Consolider des onglets, macro de J.BOISGONTIER....

Bonjour à tous

Merci Bruno d'avoi corrigé mon erreur (c'est le pb de répondre vite fait juste avant de fermer et aussi de ne pas avoir de fichier exemple. On répond de tête, sans test
 

Christian0258

XLDnaute Accro
Re : Consolider des onglets, macro de J.BOISGONTIER....

Re, le forum, Eric, Laurent, Bruno,

Merci, à vous, pour votre aide et solutions.

J'ai donc maintenant cette macro, qui plante sur "For s" avec message; Variable non définie...

Option Explicit
Sub consolide_onglets()
Sheets("base").[A1].CurrentRegion.Offset(1, 0).Clear
For s = 0 To Sheets.Count
If Not Sheets(s).Name = "Commande" And Not Sheets(s).Name = "Demande Achats" Then
Range(Sheets(s).[A2], Sheets(s).[A65000].End(xlUp).End(xlToRight)).Copy _
[A65000].End(xlUp).Offset(1, 0)
End If
Next s
On Error Resume Next
[A:A].SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

Bien amicalement,
Christian
 

ERIC S

XLDnaute Barbatruc
Re : Consolider des onglets, macro de J.BOISGONTIER....

Re

option explicit t'oblige à identifier tes variables, là s n'est pas définie et génère une erreur, comme dit Bruno c'est un avantage, on maitrise mieux...

dans ton module tu devrais avoir

Option Explicit
Sub e()
Dim s As Single
.......ton code
End Sub


Regarde dans l'aide les définitions possibles (single, long, variant, string...) en fonction de tes applications
 

Christian0258

XLDnaute Accro
Re : Consolider des onglets, macro de J.BOISGONTIER....

Re, le forum,


La macro plante toujours, maintenant sur cette ligne ; If Not Sheets(s).Name = "Commande" And Not Sheets(s).Name = "Demande Achats" Then



Option Explicit
Sub consolide_onglets()
Dim s As Single
Sheets("base").[A1].CurrentRegion.Offset(1, 0).Clear
For s = 0 To Sheets.Count
If Not Sheets(s).Name = "Commande" And Not Sheets(s).Name = "Demande Achats" Then
Range(Sheets(s).[A2], Sheets(s).[A65000].End(xlUp).End(xlToRight)).Copy _
[A65000].End(xlUp).Offset(1, 0)
End If
Next s
On Error Resume Next
[A:A].SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

Bien à vous,
Christian
 

karotte

XLDnaute Nouveau
Re : Consolider des onglets, macro de J.BOISGONTIER....

Re, le forum,

Merci à vous, merci Eric, ça fonctionne parfaitement.

C'est vrai, pour le fichier mais assez lourd au départ....

Bien à toi,
Christian


Bonjour Christian,

Je réponds à cette discution après quelques années dans l'espoir d'avoir des réponses.
Je souhaiterais savoir si tu sais comment faire à l'inverse c'est à dire inclure que certains onglets dans le traitement.

Je te remercie d'avance
Karotte
 

ERIC S

XLDnaute Barbatruc
Bonjour
il suffit de supprimer le not et mettre un or
If Sheets(s).Name = "Commande" or Sheets(s).Name = "Demande Achats" Then
...
endif
exécutera ce qu'il y a entre le if et le end if uniquement si la feuille s'appelle commande ou demande achats
 

Discussions similaires

Réponses
2
Affichages
112

Statistiques des forums

Discussions
312 149
Messages
2 085 773
Membres
102 972
dernier inscrit
Alain PICHON