Nom de feuilles ?

DJ FA

XLDnaute Occasionnel
Bonsoir je voudrais que peu importe le nom des feuilles la macro tienne compte simplement des attributions de bases "Feuil1" etc etc

Merci

Donc à la place de "p1", "p2" mettre Feuil1 et Feuil2

Merci


Code:
Option Explicit

Sub export()
Dim NbLg As Long
Dim WsSource As Worksheet
Dim Wb As Workbook
Dim n As Long
Dim Nom As String
Dim x As Integer



   On Error Resume Next
   Windows("export.xls").Activate
   On Error GoTo 0
   If Err.Number <> 0 Then
    MsgBox "Le fichier Liste est fermé, veuillez l'ouvrir", vbCritical
   Exit Sub
    End If
  
  
  Nom = "Liste.xls"
  
  For x = 1 To Workbooks.Count
    If Workbooks(x).Name = Nom Then Exit For
  Next x
  
  If x > Workbooks.Count Then
    Nom = OuvreFichier
  End If
  
  If Nom = "" Then Exit Sub
  
  Set Wb = Workbooks(Mid(Nom, InStrRev(Nom, "\", -1) + 1))
  
  With Application
    .ScreenUpdating = False
    .DisplayAlerts = False
  End With
  With Wb
    On Error Resume Next
    .Sheets("Fichier final").Delete
    .Sheets("Fichier final").Delete
    On Error GoTo 0

  ' Copier toutes les données sur une feuille provisoire
 
    Application.DisplayAlerts = True
    .Sheets.Add.Name = "Fichier final"
    .Sheets("P1").Rows(5).Copy .Sheets("Fichier final").Range("A1")
    '.Sheets("Fichier Final").Rows(1).Interior.ColorIndex = 40
   For Each WsSource In .Sheets(Array("p1", "p2"))
    'If WsSource.Range("A2") <> "" Then
   WsSource.Range("A6:AB" & WsSource.Range("A" & Rows.Count).End(xlUp).Row).Copy _
    Destination:=.Sheets("Fichier final").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
'End If
Next WsSource
End With
 

Dranreb

XLDnaute Barbatruc
Re : Nom de feuilles ?

Bonsoir.

Essayez :
VB:
For Each WsSource In Array(Feuil1, Feuil2)
Logiquement ça devrait marcher.

Edit: Et bien en dépit de cette logique, ça ne marche pas. Mais ça, si :
VB:
Sub Test()
Dim V, F As Worksheet
For Each V In Array(Feuil1, Feuil2, Feuil3)
   Set F = V
   MsgBox F.Name: Next V
End Sub
… et ça aussi :
VB:
Sub Test2()
Dim N&, F As Worksheet
For N = 1 To 2
   Set F = Choose(N, Feuil1, Feuil2)
   MsgBox F.CodeName & ".Name = """ & F.Name & """.": Next N
End Sub
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Nom de feuilles ?

Bonsoir.

Je ne comprends pas la question ni le rapport qu'elle pourrait avoir avec la 1ère.
Joignez un petit classeur contenant juste ce qu-il faut pour illustrer ce que vous voulez faire.
À tout hasard: les éléments d'une collection peuvent être accédés selon leurs positions dans celle ci au lieu de leurs clés. C'est valable aussi pour les collections Sheet et Workseet. On peut donc, par exemple, parcourir toutes les feuilles sauf la 1ère et la dernière sans avoir besoin de connaitre leurs noms. Mais ça ne répond peut être pas non plus à votre question.
 

pierrejean

XLDnaute Barbatruc
Re : Nom de feuilles ?

Bonjour à tous

A tester ( 1 et 3 à adapter ) :

Code:
liste = Array(1, 3)
For n = LBound(liste) To UBound(liste)
  'If Sheets(liste(n)).Range("A2") <> "" Then
  Sheets(liste(n)).Range("A6:AB" & Sheets(liste(n)).Range("A" & Rows.Count).End(xlUp).Row).Copy _
  Destination:=.Sheets("Fichier final").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
'End If
Next
End Sub
 

Discussions similaires

Réponses
2
Affichages
142

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz