Compiler des données
Résolu
Sigmakoff
-
Sigmakoff007 Messages postés 3 Statut Membre -
Sigmakoff007 Messages postés 3 Statut Membre -
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:
Je vous prie de m'aider.
Merci
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 |
A voir également:
- Compiler des données
- Fuite données maif - Guide
- Trier des données excel - Guide
- Sauvegarde des données - Guide
- Supprimer les données de navigation - Guide
- Excel validation des données liste - Guide
2 réponses
bonjour,
en vrac:
- as-tu une ligne avec
- 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.
en vrac:
- as-tu une ligne avec
option expliciten 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.
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
Merci