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

47fiches-de-vie.xlsm (84.50 Ko)

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 !

Rechercher des sujets similaires à "vba travailler feuilles"