VBA travailler sur plusieurs feuilles
Bonjour j'ai un souci me renvoyant a l'erreur suivante :
Erreur d’exécution 9
l'indice n'appartient pas a la sélection
je me doute que je n'utilise pas la bonne syntaxe mais après plusieurs essais je n'y parvient toujours pas.
une âme charitable pour m'aider ?
Voici mon code:
Sub M_A_j()
Dim i As Integer
Dim j As Integer
Dim Cell As Range
'boucle pour recuperer tout les noms des "feuil" repertorier dans feuil liste
For Each Cell In Worksheets("Liste").Range("A2:A9232")
'si cellule non vide
If Cell.Value <> "" Then
'Compte le nombre de cellule non vide dans la colone A de la feuil correspondant a la variable CELL
With Worksheets("CELL.Value")
j = Application.WorksheetFunction.CountA(Range("A:A"))
End With
j = j + 2
'boucle pour recuperer l'ensemble des cellules de la feuil correspondant a la variable CELL dont la datede la colone F est inferieur a aujourd'hui
For i = 5 To j
If Worksheets("CELL.Value").Cells(i, "F").Value <> "" Then
If Worksheets("CELL.Value").Cells(i, "F").Value < Date Then
With Feuil1
.[A6:G6].Insert xlDown
.[A7:G7].AutoFill .[A6:G7], xlFillFormats
.Cells(6, "A") = Cell.Value
.Cells(6, "B") = Worksheets("CELL.Value").Cells(i, "A").Value
.Cells(6, "C") = Worksheets("CELL.Value").Cells(i, "B").Value
.Cells(6, "D") = Worksheets("CELL.Value").Cells(i, "C").Value
.Cells(6, "E") = Worksheets("CELL.Value").Cells(i, "D").Value
.Cells(6, "F") = Worksheets("CELL.Value").Cells(i, "E").Value
.Cells(6, "G") = Worksheets("CELL.Value").Cells(i, "F").Value
End With
End If
End If
Next
End If
Next Cell
End Sub
j'ai surligné la partie qui me renvoie l'erreur, mais je pense qu'il y a d'autres erreurs (a chaque fois que j'utilise Worksheets("CELL.Value"))
Cordialement
Salut,
Le with c'est pour ne pas avoir à répéter le début d'une ligne de code
Exemple :
With Worksheets("Feuil1")
.Range("A1") = "Renseignement de la cellule A1"
.Column("A:A").Hidden = True
End With
'Ou
With ActiveCell
.Borders.Weight = 3
With .Font
.Bold = True
.Size = 18
.Italic = True
.Name = "Arial"
End With
End With
With Worksheets("CELL.Value")
j = Application.WorksheetFunction.CountA(Range("A:A"))
End With
Là ton problème c'est que tu donne une valeur à ta variable mais le code ne comprend pas ou se situe ta cellule.
Essaie comme ceci :
j = Application.WorksheetFunction.CountA.(Worksheets("CELL.Value").Range("A:A"))
Nb: je suis pas sur de moi je ne connais pas cette fonction.
Cdlt,
Bonjour xTaz,
J'ai téléchargé ton fichier joint, mais à l'ouverture, ça demande un mot de passe. :(
Je te propose ce code VBA (mais je n'ai pas pu le tester) :
Option Explicit
Sub M_A_j()
Dim Cell As Range, i As Long, j As Long, k As Byte
Application.ScreenUpdating = False
'boucle pour récuperer tous les noms des "feuil" répertoriés dans feuil Liste
For Each Cell In Worksheets("Liste").Range("A2:A9232")
If Cell <> "" Then 'si cellule non vide
'compte le nombre de cellules non vides dans la colone A,
'de la feuil correspondant à la variable Cell
With Worksheets(Cell)
j = Application.WorksheetFunction.CountA(.Range("A:A"))
End With
j = j + 2
'boucle pour récupérer l'ensemble des cellules de la feuil correspondant à la
'variable Cell, et dont la date de la colonne F est inférieure à aujourd'hui
For i = 5 To j
If Worksheets(Cell).Cells(i, "F") <> "" Then
If Worksheets(Cell).Cells(i, "F") < Date Then
With Feuil1
.[A6:G6].Insert xlDown
.[A7:G7].AutoFill .[A6:G7], xlFillFormats
.[A6] = Cell
For k = 1 To 6
.Cells(6, k + 1) = Worksheets(Cell).Cells(i, k)
Next k
End With
End If
End If
Next i
End If
Next Cell
End Sub
Je pourrais faire mieux avec ton vrai fichier, et faire un test réel.
À partir de quelle feuille lances-tu la macro ?
a) toujours depuis Feuil1 ?
b) toujours depuis une autre feuille ? si oui, laquelle ?
c) depuis une feuille quelconque du classeur ?
Ta réponse peut aider à faire un code VBA plus adapté.
À te lire pour la suite.
Cordialement
Salut xTaz,
Salut l'équipe,
With Worksheets("CELL.Value")
Worksheets attend certes une variable STRING mais CELL.Value est une String en elle-même (quoique...), donc, enlève les guillemets...
A+
Désolé gros pépin de santé je n'ai pas pu m’en occuper avant !
super entre le code de dhany et la remarque de curulis57, j'ai pu faire ce que je voulais merci merci !