Code VBA - SOS !!!

Bonjour à tous,

J'essaie de créer un code similaire à celui-là avec mes données adapter à mon fichier mais je n'y arrive pas...

SOS quelqu'un pourrait m'aider ????

Mes données :
Rechercher : la valeur de la cellule B2 (c'est une date) de la feuille "Saisies"
Dans : Feuille du classeur 4 à 15 ou Feuille de Janvier à Décembre aux cellules : B2 à B37

Ce que la macro devra faire si c'est une valeur trouvée :
Copie les cellules B2 à S2 de la feuille "Saisies"
Coller sur la cellule de la valeur trouvée dans la feuille trouvée

En dessous le code le plus rapprochant (enfin je ne suis pas certaine) mais pas avec mes données :

Sub Cherche()
'déclaration des variables :
Dim Trouve As Range, PlageDeRecherche As Range
Dim Valeur_Cherchee As String, AdresseTrouvee As String

'********* à adapter ***********
'affectation de valeurs aux variables :
    'on cherche le mot "Trouve"
Valeur_Cherchee = "Trouve"
    'dans la première colonne de la feuille active
Set PlageDeRecherche = ActiveSheet.Columns(1)
'*******************************

'méthode find, ici on cherche la valeur exacte (LookAt:=xlWhole)
Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, 
                     LookAt:=xlWhole)

'traitement de l'erreur possible : Si on ne trouve rien :
If Trouve Is Nothing Then
    'ici, traitement pour le cas où la valeur n'est pas trouvée
    AdresseTrouvee = Valeur_Cherchee 
                                & " n'est pas présent dans " 
                                & PlageDeRecherche.Address
Else
    'ici, traitement pour le cas où la valeur est trouvée
    AdresseTrouvee = Trouve.Address
End If
MsgBox AdresseTrouvee
'vidage des variables
Set PlageDeRecherche = Nothing
Set Trouve = Nothing
End Sub


Merci d'avance pour tout !
Noemi

6 réponses

  1. Contributeur
    Bonjour,

    comme ceci:

    Option Explicit
    Sub boucle()
    Dim i As Integer
    Dim FL1 As Worksheet, NoCol As Integer
    Dim NoLig As Long, Var As Variant, cherche
     cherche = Worksheets("Saisies").Range("B2").Value
        NoCol = 2 'lecture de la colonne B
    For i = 4 To 15 'feuilles
    Set FL1 = Worksheets(Worksheets(i).Name)
       For NoLig = 2 To 37 'colonne B
            Var = FL1.Cells(NoLig, NoCol)
            If Var = cherche Then
            Worksheets("Saisies").Range("B2:S2").Copy _
         Destination:=FL1.Cells(NoLig, 2)
            End If
        Next
    Next
    End Sub
    


    voilà

    1. Contributeur
      bonjour,
      pourquoi pas:
      Set FL1 = Worksheets(i)
  2. ça ne fonctionne pas...

    Set FL1 = Worksheets(Worksheets(i).Name)

    erreur d'exécution '9'
    L'indice n'appartient pas à la sélection
    1. Contributeur
      La boucle se fait de la feuille 4 a la 15 vérifier si cela est possible
  3.  Dim i As Integer
    Dim FL1 As Worksheet, NoCol As Integer
    Dim NoLig As Long, Var As Variant, cherche
    cherche = Worksheets("Saisies").Range("B2").Value
    NoCol = 2 'lecture de la colonne B
    For i = 4 To 15 'feuilles
    Set FL1 = Worksheets(Worksheets(i).Name)
    For NoLig = 2 To 37 'colonne B
    Var = FL1.Cells(NoLig, NoCol)
    If Var = cherche Then
    Worksheets("Saisies").Range("B2:U2").Copy _
    Destination:=FL1.Cells(NoLig, 2)
    End If
    Next
    Next


    ce code là fonctionne !! =) =)
    1. Merci merci merci !

      ça me sauve la vie !!!

      c'est génial je suis trop contente =) =) =)
      1. par contre quand je l'intègre à ma macro ça ne fonctionne plus ?
        je ne l'ai pas mis au bon endroit ?


        Sub RemplirTableauSaisie()

        'enlever la protection de la feuille
        Sheets("Saisies").Select
        ActiveSheet.Unprotect

        'créer une nouvelle ligne
        Range("A2").Select
        Selection.ListObject.ListRows.Add (1)

        'remplir le tableau saisie
        Sheets("Formulaire").Select
        Range("A78:U78").Select
        Selection.Copy
        Sheets("Saisies").Select
        Range("A2").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        Application.CutCopyMode = False

        Dim i As Integer
        Dim FL1 As Worksheet, NoCol As Integer
        Dim NoLig As Long, Var As Variant, cherche
        cherche = Worksheets("Saisies").Range("B2").Value
        NoCol = 2 'lecture de la colonne B
        For i = 4 To 15 'feuilles
        Set FL1 = Worksheets(Worksheets(i).Name)
        For NoLig = 2 To 37 'colonne B
        Var = FL1.Cells(NoLig, NoCol)
        If Var = cherche Then
        Worksheets("Saisies").Range("B2:U2").Copy _
        Destination:=FL1.Cells(NoLig, 2)
        End If
        Next
        Next

        'proteger feuille
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

        'revenir sur le formulaire
        Sheets("Formulaire").Select
        Range("A1").Select

        'masquer les lignes
        Rows("9:1000").Select
        Selection.EntireRow.Hidden = True

        'afficher les lignes des catégories
        Rows("1:8").Select
        Selection.EntireRow.Hidden = False

        'explications
        Range("A9:K11").Select
        ActiveCell.FormulaR1C1 = ""

        'affichage de la catégorie
        Range("I1:L1").Select
        ActiveCell.FormulaR1C1 = ""

        Range("B12").Select
        ActiveCell.FormulaR1C1 = "=R[4]C"
        Range("D12").Select
        ActiveCell.FormulaR1C1 = "=R[4]C"
        Range("F12").Select
        ActiveCell.FormulaR1C1 = "=R[4]C"
        Range("H12").Select
        ActiveCell.FormulaR1C1 = "=R[4]C"
        Range("J12").Select
        ActiveCell.FormulaR1C1 = "=R[4]C"
        Range("L12").Select
        ActiveCell.FormulaR1C1 = "=R[4]C"
        Range("L16").Select

        Range("A15:C15").ClearContents
        Range("D15").ClearContents
        Range("A18").ClearContents
        Range("F21:I21").ClearContents
        Range("A23:C23").ClearContents
        Range("A25:C25").ClearContents
        Range("A27:C27").ClearContents
        Range("A29:C29").ClearContents
        Range("A31:C31").ClearContents
        Range("A33:C33").ClearContents
        Range("A35:C35").ClearContents
        Range("A37:C37").ClearContents
        Range("A39:C39").ClearContents
        Range("A41:C41").ClearContents
        Range("A43:C43").ClearContents
        Range("A45:C45").ClearContents
        Range("A47:C47").ClearContents
        Range("A49:C49").ClearContents
        Range("A51:C51").ClearContents
        Range("A53:C53").ClearContents
        Range("A55:C55").ClearContents
        Range("C57").ClearContents
        Range("C57").ClearContents
        Range("E59").ClearContents
        Range("E62").ClearContents
        Range("F57:I57").ClearContents
        Range("A72:N72").ClearContents

        ' EffacerContenuTableau Macro
        Rows("78:78").Select
        Selection.ClearContents

        End Sub

        1. en faite, ça ne marche pas que pour novembre et décembre... les autres mois ça fonctionne
          1. J'ai juste modifié les numéros de page de 4 à 17 et ça fonctionne... bizarre
          2. Contributeur
            @NoemiContent que cela fonctionne

            Il faut mettre les déclarations de variables au début de la sub comme ceci:

              
                Sub RemplirTableauSaisie()      
            Dim i As Integer
            Dim FL1 As Worksheet, NoCol As Integer
            Dim NoLig As Long, Var As Variant, cherche


            Si cela convient marquer comme résolu au début de la demande

            @+ Le Pivert