Nommer des cellules avec le nom de feuille, pour plusieurs feuilles

Kaciel

XLDnaute Nouveau
Bonjour à tous,

Malgré de multiples recherches je ne trouve pas pourquoi mon code ci-après ne fonctionne pas. Bon j'avoue que c'est du bricolage de tout ce que j'ai pu récupérer à droite et à gauche sur le forum et ailleurs :rolleyes:

Ce que je veux : importer un fichier, contenant plusieurs feuilles (nombre de feuilles aléatoire).
Pour chaque feuille, renseigner de la cellule I3 à "la fin" avec le nom de la feuille (vous verrez que dans mon code je ne prends que les 3 premières lettres).

Code:
Sub Importer_données()
    Dim fichier As String, wbk As Workbook
        
    fichier = Application.GetOpenFilename("Fichier Excel, *.xls; *.xlsx", , , , False)
    If UCase(fichier) = "FAUX" Then Exit Sub
    Set wbk = Application.Workbooks.Open(fichier, , False)
    nomfichier = ActiveWorkbook.Name
        
        Dim ws As Worksheet
        
        For Each ws In ActiveWorkbook
                    
            Range("I3").Select
            ActiveCell.FormulaR1C1 = _
            "=MID(CELL(""nomfichier"",RC[-6]),FIND(""]"",CELL(""nomfichier"",RC[-6]))+1,3)"
            Selection.AutoFill Destination:=Range("I3:I" & Range("A3").End(xlDown).Row), Type:=xlFillValues
        
        Next ws
        
End Sub

VBA me signale que c'est "For Each ws In ActiveWorkbook" qui merde...Je suis un peu désemparée...Je dois utiliser qqch qui n'existe pas non ?

D'avance merci à tous pour vos conseils,

K.
 

job75

XLDnaute Barbatruc
Re : Nommer des cellules avec le nom de feuille, pour plusieurs feuilles

Bonjour Kaciel,

Je n'ai rien testé mais corrigez déjà avec :

Code:
For Each ws In ActiveWorkbook.Worksheets
Edit : salut CHALET53, à toi l'honneur :)

A+
 

job75

XLDnaute Barbatruc
Re : Nommer des cellules avec le nom de feuille, pour plusieurs feuilles

Re,

La bonne boucle :

Code:
For Each ws In ActiveWorkbook.Worksheets
  ws.Range("I3").FormulaR1C1 = _
            "=MID(CELL(""nomfichier"",RC[-6]),FIND(""]"",CELL(""nomfichier"",RC[-6]))+1,3)"
  ws.Range("I3").AutoFill Destination:=ws.Range("I3:I" & ws.Range("A3").End(xlDown).Row), Type:=xlFillValues
Next ws
En VBA il est presque toujours inutile de sélectionner.

Il suffit ici de préciser la feuille devant chaque Range.

A+
 

job75

XLDnaute Barbatruc
Re : Nommer des cellules avec le nom de feuille, pour plusieurs feuilles

Re,

Et il est plus simple d'écrire :

Code:
Dim ws As Worksheet, F As String
F = "=MID(CELL(""nomfichier"",RC[-6]),FIND(""]"",CELL(""nomfichier"",RC[-6]))+1,3)"
For Each ws In ActiveWorkbook.Worksheets
  ws.Range("I3:I" & ws.Range("A3").End(xlDown).Row).FormulaR1C1 = F
Next
A+
 

Kaciel

XLDnaute Nouveau
Re : Nommer des cellules avec le nom de feuille, pour plusieurs feuilles

Je rebondis sur mon sujet : si je veux rajouter des opérations sur chaque feuille du genre supprimer la dernière ligne de chaque feuille, renommer des cellules etc, où dois-je mettre mes opérations du style ci-dessous dans le code ?
Code:
ActiveCell.SpecialCells(xlLastCell).Select
Selection.EntireRow.Delete
 

job75

XLDnaute Barbatruc
Re : Nommer des cellules avec le nom de feuille, pour plusieurs feuilles

Bonjour Kaciel,

Il faut profiter de la boucle sur les feuilles et surtout, surtout ne pas utiliser Select !!!

Pour la dernière cellule :

Code:
Dim ws As Worksheet, F As String
F = "=MID(CELL(""nomfichier"",RC[-6]),FIND(""]"",CELL(""nomfichier"",RC[-6]))+1,3)"
For Each ws In ActiveWorkbook.Worksheets
  ws.Range("I3:I" & ws.Range("A3").End(xlDown).Row).FormulaR1C1 = F
  ws.Cells.SpecialCells(xlCellTypeLastCell).EntireRow.Delete
Next
Mais la dernière cellule ne sera pas forcément celle que vous attendiez... Ceci est mieux :

Code:
Dim ws As Worksheet, F As String
F = "=MID(CELL(""nomfichier"",RC[-6]),FIND(""]"",CELL(""nomfichier"",RC[-6]))+1,3)"
For Each ws In ActiveWorkbook.Worksheets
  With ws.Range("A3").End(xlDown)
    ws.Range("I3:I" & .Row).FormulaR1C1 = F
    .EntireRow.Delete
  End With
Next
A+
 

Discussions similaires

Réponses
7
Affichages
383

Membres actuellement en ligne

Statistiques des forums

Discussions
312 827
Messages
2 092 557
Membres
105 451
dernier inscrit
mariane_lp