Utilisé des données sans savoir où elles sont placées

Bonjour à tous,

Je travail sur un excel à mon travail et j'ai besoin de vous pour un problème. Je ne suis pas un pro et je m'excuse si le problème a été résolu dans un autre sujet, je ne sais pas vraiment comment s'appelle mon problème.

Alors voilà, je dois faire un rapport de réservation pour un restaurant. Pour ça, je récupère un fichier CSV sur le site de réservation qui contient toutes les infos dont j'ai besoin. Je l'import ensuite dans un excel qui récupère les données et les met en forme pour que ce soit lisible.

Mon problème, c'est que le fichier CSV me donne les réservations du déjeuner et du dîner, et donc je ne peut pas prévoir à quelle ligne commencerons les réservations du dîner. Par exemple, si j'ai 3 réservations au déjeuner, les réservations du dîner commenceront à la ligne 15 et si j'en ai 5 à la ligne 17. A cause de ça, je ne sais pas comment récupérer mes données.

capture d e cran 2021 06 13 a 05 23 10 capture d e cran 2021 06 13 a 05 23 56

Et voici ce que je veux faire des données :

capture d e cran 2021 06 13 a 05 24 17

Je vous remercie d'avance et j'espère trouvé solution à ce problème.

Il est nécessaire d'avoir un fichier CSV brut, donc tel qu'il est sur le site de réservations. Même s'il y a des noms, il n'a rien de confidentiel. A la rigueur, on peut facilement retirer les lignes qui permettent d'identifier le restaurant à l'aide d'un éditeur de texte (Notepad++ par exemple).

Bonjour,

crée toi un nom avec =MIN(SI(Feuil1!$C$1:$C$500<18/24;9^9;LIGNE(Feuil1!$C$1:$C$500)))
Ca te donnera le n° de ligne >= 18:00 en C

Sur feuille : =DébutSoir
VBA : MsgBox [DébutSoir]
eric

Merci à tous pour vos réponses ! Je vous mets un CVS d'exemple en PJ.

J'ai pas tout compris, je suis pas un expert alors voici mes nouvelles questions :

crée toi un nom avec =MIN(SI(Feuil1!$C$1:$C$500<18/24;9^9;LIGNE(Feuil1!$C$1:$C$500)))

capture d e cran 2021 06 15 a 03 28 25

--> Je comprend pas pourquoi la formule me renvoie 6 ici ? Elle devrait pas me renvoyer 13 ?

Sur feuille : =DébutSoir
VBA : MsgBox [DébutSoir]

--> Je met ça où ? Dans une macro ?

Le but de la manœuvre est à la fin de récupérer toutes les infos de ce tableau pour les mettre en forme. Est-ce que ce que je vous demande va vraiment m'aider ? Je viens de passer plusieurs heures dessus, et je me rends compte que même en sachant où sont les données, le fait qu'elles bougent, je ne vois pas comment les retranscrire.

Je cherche à faire un truc du genre :

x = ligne ou y'a écrit "diner"
x-2 = ligne de fin des dejeuner = y
x+3 = ligne début des diners = z

Ensuite dans le tableau mis en forme je voudrais mettre :

A1 = Ay
A2 = A(y+1)
A3 = A(y+2)...

A20 = Az
A21 = A(z+1)...

Pensez vous que c'est réalisable ? Y'a-t-il des solutions peut-être plus simple ?

Merci pour votre aide !

Bonjour,

si tu mets la formule sur la feuille, il faut la valider en matricielle avec Shift+Ctrl+Entrée, en étant dans la barre d'édition des formules en haut.

Pour créer un nom il faut alllr dans Formules / Gestionnaire de noms

Et il faut enregistrer tes fichiers dans le type *.xlsx.
En csv tu perds tes formules

eric

Bonjour,

Quand tes coordonnées sont dynamiques il suffit de rechercher de façon dynamique Dîner et comme ça tu pourras appliquer ton code en te basant sur ces coordonnées:

Lig = Cells.Find(What:="Diner", LookIn:=xlFormulas2, LookAt:=xlWhole, SearchOrder:=xlByRows).Row
Col = Cells.Find(What:="Diner", LookIn:=xlFormulas2, LookAt:=xlWhole, SearchOrder:=xlByRows).Column

'Ensuite à partir de ces coordonnées tu viens récupérer les informations
Client=cells(Lig+3,1)
Pax=cells(Lig+3,1)
'...
'Si tu veux connaître le nombre de réservation et faire une boucle tu fais comme ci-dessous
If Cells(Lig + 3, Col) = vbNullString Then
        NbRes = 0
    Else
        If Cells(Lig + 4, Col) = vbNullString Then
            NbRes = 1
        Else
            NbRes = Range(Cells(Lig + 3, Col), Cells(Lig + 3, Col).End(xlDown)).Cells.Count
        End If
    End If

for i=1 to NbRes
    Client=cells(Lig+3,1)
    Pax=cells(Lig+3,1)
    '...
    'Et ici tu te sers des variables pour les écrire dans un autres onglets où tu mets en forme comme tu le souhaites
next i
    

J'espère que ça t'aura été utile.

Bonjour,

Une autre proposition avec Power Query.

J'ai maintenant un doute sur ta version Excel. Ne travailles-tu pas avec un Mac ? Précise ta version Excel.

Cdlt.

10elie13200.xlsx (19.02 Ko)
capture d ecran 2021 06 15 075844
Rechercher des sujets similaires à "utilise donnees savoir placees"