Compiler des données

Résolu
Bonjour,
Je suis novice dans la programmation avec VBA. Je suis confronter au problème suivant:
Je veux compiler des données de plusieurs feuilles dans une seule. Pour mon test, j'utilise 2 feuilles: Feuil1(pour recueillir les données) et Feuil2 (source de données en vrac). Mon approche est de recherche chaque variable de la colonne B de la feuil 1, dans la feuil 2, et s'il existe, de copier toutes ses données dans la feuil 1, devant la variable concernée. Et cela pour toutes variables de la feuil1. J'envisage également ajouter plusieurs feuilles de données à consolider dans la feuil1:
Voici le VBA que j'ai tenté de mettre en place pour gérer cela : Au début les choses fonctionnait, mais plus je tends vers mon objectif et plus rien ne marche:

Sub Test()

    Dim Cell_concernée As Range
    Dim Cell_suivante As Range
    Dim i As Integer
    Dim Mois As String

    For i = 2 To 13

    Reassureur = Worksheets("Feuil1").Cells(i, 2).Value

    Set Cell_concernée = Cells.Find(What:=Mois, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False)
    Set Cell_suivante = Cells(Cell_concernée.Row, Cell_concernée.Column + 1)


    Sheets("Feuil2").Select
       
        If Cell_concernée.Activate Then
        Range(Cell_concernée, Cells(Cell_concernée.Row, Cell_concernée.Column + 5)).Interior.Color = RGB(255, 224, 0)
        Cell_suivante.Select
        Range(Cell_suivante, Cells(Cell_concernée.Row, Cell_concernée.Column + 5)).Select
        Selection.Copy
        Cell_suivante.Select
        
        Sheets("Feuil1").Select
    
            Cell_concernée.Activate
            Cell_suivante.Select
            Range(Cell_suivante, Cells(Cell_concernée.Row, Cell_concernée.Column + 5)).Select
            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd, SkipBlanks _
            :=False, Transpose:=False
            Cell_suivante.Select
            
        End If
    Next i
        
         
End Sub


Je vous prie de m'aider.

Merci

Message modifié par la modération
Pour une lecture plus facile du code, à l'avenir utilisez les balises, VOIR CETTE PAGE

2 réponses

  1. Contributeur
    bonjour,
    en vrac:
    - as-tu une ligne avec
    option explicit
    en début de module? si non, ajoute-là.
    - que contient la variable Mois? A quoi sert la variable Reassureur?
    - il est recommandé d'éviter d'utiliser select et activate
    - il est recommandé de toujours préciser la feuille quand on utile range et cells
    - utilises des noms de variables plus clairs. il me semble que tu ignores dans quelle feuille se trouvent Cell_concernée et Cell_suivante.
    1. Rebonjour Yg_be,

      Avec votre précédente réponse, j'ai pu améliorer et cela fonctionne pour une seule variable i. Merci bcp
      Voici le code
      Sub Test_4()

      Dim Cell_concernée_Feuil2 As Range
      Dim i As Integer
      Dim Mois As String

      i = 13

      Mois = Worksheets("Feuil1").Cells(i, 2).Value

      Worksheets("Feuil2").Select

      Set Cell_concernée_Feuil2 = Cells.Find(What:=Mois, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
      :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
      False, SearchFormat:=False)

      If Not Cell_concernée_Feuil2 Is Nothing Then
      Cell_concernée_Feuil2.Activate
      Range(Cell_concernée_Feuil2, Cells(Cell_concernée_Feuil2.Row, Cell_concernée_Feuil2.Column + 5)).Interior.Color = RGB(255, 224, 0)
      Cells(Cell_concernée_Feuil2.Row, Cell_concernée_Feuil2.Column + 1).Select
      Range(Cells(Cell_concernée_Feuil2.Row, Cell_concernée_Feuil2.Column + 1), Cells(Cell_concernée_Feuil2.Row, Cell_concernée_Feuil2.Column + 5)).Select
      Selection.Copy
      Cells(Cell_concernée_Feuil2.Row, Cell_concernée_Feuil2.Column + 1).Select

      Worksheets("Feuil1").Select

      Worksheets("Feuil1").Cells(i, 3).Activate
      Range(Worksheets("Feuil1").Cells(i, 3), Cells(Worksheets("Feuil1").Cells(i, 3).Row, Worksheets("Feuil1").Cells(i, 3).Column + 5)).Select
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd, SkipBlanks _
      :=False, Transpose:=False
      Worksheets("Feuil1").Cells(i, 3).Select

      End If

      End Sub
    2. @Sigmakoff007Je viens de tester pour l'ensemble et cela fonction pour i = 2 to 13
      Merci
  2. Bonjour Yg_be.

    Je vous remercie pour votre réponse, j'ai tellement écris et effacé que j'ai du oublier certaines variables. Alors je vais tenir compte de vos observations et améliorer mon programme. Merci