Sélectionner des données en fonction d'une plage horaire

Bonjour,

Je découvre VBA dans le cadre d'une stage où l'on me demande de pouvoir extraire des infos d'une base de données générée quotidiennement en format text. Je dois créer une macro permettant d'extraire un certain nombre d'informations de ces bases de données. Je suis parvenu à le faire pour le fichier text en entier qui comporte les données de toute une journée. Hors on me demande de pouvoir le faire pour la plage horaire que l'on souhaite et là je bloque.

J'ai créé un Userform avec deux Combobox. Ces deux combobox sont tous les deux alimentés par la colonne E de ma feuil2 qui est une colonne contenant des horaires au format hh:mm:ss. (E1 étant le nom de ces données : Time)

Mon souhait est de pouvoir traiter les données dans la plage horaire sélectionnée.

Je parviens à récupérer la valeur de la ligne qui correspond aux heures de début et de fin que l'on choisit (j'utilise équiv de excel dans deux cellules où je stocke ces valeurs) : ces variables sont i et j

Ce que je ne parviens pas à faire c'est de sélectionner et copier l'ensemble des lignes de données qui sont compris entre i et j (valeurs variables) de la feuil1. (la base de données à analyser est feuil1 mais j'ai du travailler sur la feuil2 pour avoir les heures en format heure (les heures sont en format texte sur la base de données feuil1), mais les lignes correspondent bien entre les deux pages).

Par la suite je pourrai vider entièrement la feuil1 et coller ma selection à l'emplacement à partir de la cellule A2. J'exécuterai ainsi mon analyse des données uniquement sur la plage horaire souhaitée.

J'espère avoir été clair et vous remercie par avance pour vos idées ou vos solutions.

Lenovic

Bonjour,

Si j'ai bien lu, tu as une plage de la ligne i à la ligne j à prélever sur Feuil1 et à y remettre après avoir effacé cette dernière.

Autrement dit, il te reste le plus simple à faire !

Tu disposes de i et j, tes numéros de lignes, soit k le numéro de la dernière colonne utilisée (ou nombre de colonne, même chose puisqu'on commence colonne 1). Tu déclareras en outre une variable plage (ou le nom que tu veux...)

With Worksheets("Feuil1")
    plage = .Cells(i, 1).Resize(j - i + 1, k).Value
    .Cells.Clear
    .Range("A1").Resize(j - i + 1, k).Value = plage
End With

et voilà qui devrait te permettre de boucler cette opération.

Cordialement.

Merci beaucoup MFerrand, c'est exactement ce dont j'avais besoin.

J'ai un autre problème concernant mes variables i et j.

Ces variables correspondent au numéro de ligne de l'heure de début sélectionnée (i) et au numéro de ligne de l'heure de fin sélectionnée (j). ( sur la colonne E de la feuil2)

Pour récupérer leur valeur j'utilise la fonction Equiv de excel.

Le problème est que je suis amené à vider mon fichier excel pour importer une nouvelle base de données à analyser et à ce moment, la fonction Equiv est perdue (#Ref!)

Je souhaiterai savoir de quelle manière je pourrai récupérer les valeurs i et j directement avec VBA pour éviter ce problème. (sachant que la longueur de ma colonne n'est pas connue par avance et dépend de la base de donnée importée)

J'ai essayé avec Find et Match, mais je n'y parviens pas.

J'espère avoir été clair et vous remercie par avance pour vos idées ou vos solutions.

Lenovic

--> c'est bon, je me suis arrangé pour qu'il y ait toujours une valeurs dans ma formule EQUIV meme quand je change de base de données, je vais laissé comme ça, merci

Là un fichier avec les données que tu récupères est nécessaire, car avec des données importées le traitement n'est pas acquis d'avance !...

Rechercher des sujets similaires à "selectionner donnees fonction plage horaire"