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
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
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