VBA ou Formule

MAZETTE

XLDnaute Occasionnel
Bonjour à tous,

Je me retrouve confronté à un problème.

Je souhaiterai à partir des données se trouvant sur l'onglet BASE obtenir les données se trouvant sur l'onglet RESULTAT.

Il s'agit en fait de renvoyer un résultat en fonction d'une date...sujet mainte fois traité sur le forum mais avec ici une particularité c'est que je n'ai pas la possibilité de mettre en forme et d'aligner les données comme je le souhaiterai sur l'onglet base car les données provienne d'une exportation via un logiciel.

La première étape serait selon moi de pouvoir classer correctement les données afin de pouvoir les traiter.

Je me suis donc aidé de l'enregistreur de macro en passant par une feuille intermédiaire afin de classer les données mais est-il possible selon vous de faire la même chose sans créer une feuille intermédiaire ou est-il préférable de passer par une formule.

Merci à vous pour votre retour
 

Pièces jointes

  • Test.zip
    4.7 KB · Affichages: 27
  • Test.zip
    4.7 KB · Affichages: 24
  • Test.zip
    4.7 KB · Affichages: 29

ROGER2327

XLDnaute Barbatruc
Re : VBA ou Formule

Bonjour MAZETTE
Il est certain que travailler sur une base de données correctement construite serait plus agréable. Pour l'exemple que vous donnez, essayez :
Code:
[COLOR="DarkSlateGray"][B]Sub tata()
Dim i As Long, j As Long
   i = 2
   j = 4
   Application.ScreenUpdating = False
   Application.Calculation = xlCalculationManual
   Do Until IsEmpty(Sheets("Base").Cells(i, 1))
      If IsDate(Sheets("Base").Cells(i, 1)) Then
         Sheets("Résultat").Cells(j, 1) = Sheets("Base").Cells(i, 1)
         Sheets("Résultat").Cells(j, 2) = Sheets("Base").Cells(i, 1).Offset(1, 1)
         Sheets("Résultat").Cells(j, 3) = Sheets("Base").Cells(i, 1).Offset(1, 2)
         Sheets("Résultat").Cells(j, 4) = Sheets("Base").Cells(i, 1).Offset(1, 3)
         i = i + 1
         j = j + 1
      End If
      i = i + 1
   Loop
   Application.Calculation = xlCalculationAutomatic
   Application.ScreenUpdating = True
End Sub[/B][/COLOR]
ROGER2327
#2185
 

ROGER2327

XLDnaute Barbatruc
Re : VBA ou Formule

Re...
Je n'ai pas le temps de commenter immédiatement (c'est toujours un peu long à faire et j'ai autre chose sur le feu). Mais, en deux mots, l'idée est la suivante :
  • Parcourir la colonne A de Base (avec Do ... Loop).
  • Chaque fois qu'on y trouve une date (ce qu'on sait avec If IsDate(Sheets("Base").Cells(i, 1)) ...), envoyer la date et les trois données intéressantes de la ligne suivant la date dans Résultat.
Si c'est suffisant pour vous, parfait. Sinon, revenez demander des détails.​
Bon courage.
ROGER2327
#2187
 

Discussions similaires

Réponses
5
Affichages
258
Réponses
3
Affichages
350

Statistiques des forums

Discussions
311 720
Messages
2 081 897
Membres
101 833
dernier inscrit
sandra25