Souci avec Boucle while

Bonjour le forum

11aide-vba.xlsm (213.85 Ko)

La macro suivant permets de récuprer les sommes des personnes absentes par spécialité par jours. J'ai les données brut dans un EXTRACT Feuille 2. Je voudrai récuperer les sommes des personnes par jours par spécialité (AVI,MEC..) et les intégrer dans un tableau recap.

Je voudrais que la macro balaye les dates dans le recap et dans l'extract, si les valeurs des dates sont égales alors il faudrais que la sommes des spécialités par jour et par personnes soit déposer dans le RECAP. J'ai la macro suivant seulement pour la boucle while je voudrais faire deux condtion

1 conditon : balayer les dates de la feuilles recap arret du programme si il n'y a plus de dates

2 contion : mettre les sommes des spécialité par jours des absant si la date ( dans le recap et l'extract) est égale répéter cela sur toutes les le tableau des spé dans le recap.

-But intégrer les sommes par spécialité par jours des absants (à partir des données brut "EXTRACT") dans le recap en un seul programme

Jai mis le fichier joint. je ne sais pas si ce que j'ai écris est claire.

Merci d'avance si quelqu'un peu m'aider.

Sub tableau_capacite()

tCrit = Array("AVI", "CAB", "CEL", "MEC")

Application.Calculation = xlCalculationManual

For i = LBound(tCrit) To UBound(tCrit)

For k = 7 To 1000

'crée au code pour trouver le numéro de colonne dans la feuille RECAP et enregistrer dans une variable col_num

'date_to_check = Cells(1, k).Value

'Crée boucle while

'1condtion = parcout des dates dans le recap si la celuule vide arret de la boucle recap

' 2 condition deux date sont égale alors je fait condtion et j'integre les sommes des spécialité dans le tableau blanc

'numéro de colonne +1

col_num = 3 ' dans le reacap les dates commence a 3

While Sheets("RECAP").Cells(17, col_num) <> "" 'end du programme si les date dans le recap est vide

End

Sheets("RECAP").Cells(17, col_num) = Cells(1, k).Value

Sheets("RECAP").Cells(i + 19, col_num).Value = WorksheetFunction.SumIf(Columns(1), tCrit(i), Columns(k))

col_num = col_num + 1

Wend

Next k

Next i

Application.Calculation = xlCalculationAutomatic

End Sub

Salut,

Je ne suis pas certain d'avoir compris ton problème : tes explications ne font pas assez référence aux objets Excel (cellules, colonnes, feuilles, etc.) et tu parles d'une feuille ''EXTACT" qui n'existe pas.

J'ai compris que tu souhaitais avoir le total des nombres inscrits sur la feuille "EXPORT VP ABS" reporté sur la feuille ''RECAP" - sur les lignes 20 à 23 - en fonction des en-têtes "AVI", "CAB", "CEL" et "MEC".

En cliquant sur le bouton en place sur la feuille "EXPORT VP ABS" vers D1, tu devrais avoir le résultat souhaité. Sinon tente d'être plus précis dans ton souhait.

Amicalement.

11aide-vba-v1.xlsm (221.87 Ko)

Bonjour,

Tout d’abord Merci pour votre réponse.

Feuille EXTRACT = EXPORT VP ABS

Je voudrais que la somme des totales des personnes par jour par spécialité ( de mon EXPORT VP ABS ) soit directement déposer dans ma feuille recap.

Pour cela je voulais faire une boucle While dans la macro. Cette boucle aurait pour but de

Comparer les dates entre la feuille recap et l’export Vp abs . Je parcourt les dates dans la feuille RECAP

Et lorsque la date entre la feuille 1 (ligne 17 , jusqu’à fin de la feuille) et la date feuille 2 (ligne 1 jusqu’à la fin ) sont égale alors on fait la somme (par jour par spécialité des personnes) et cette somme doit être reporté dans le recap .
je sais pas si cela est plus claire ?
merci d’avance à vous.

Donc ma macro ne correspond pas du tout à ton attente ?

Si c'est parfait merci beaucoup !Cela m'a beaucoup aidé

Une derniere question j'aimerais exécuter la macro Hebodomadairement , ceci dit la feuille extract feuille 2 change a chaque fois (chaque semaine) mais le nom de la feuille reste le meme( mais les valeurs des sommes change).Dois-je rajouter quelque chose dans la macro ou la déposer dans THIS WORKBOOK suffit pour faire cela? J'ai aussi l'impréssion que la macro ne tiens pas compte de la date

ET au niveau des lignes de code,

Compteur_CAB As Byte, Compteur_CEL As Byte, Compteur_MEC As Byte ' Byte signifie quoi concraitement je ne connais pas

With Sheets("RECAP")

For i = 7 To 1000

If Cells(1, i) = "" Then Exit For
On Error Resume Next
Colonne_Date = WorksheetFunction.Match(CSng(Cells(1, i)), .Range("17:17"), 0) ' Sur cette ligne je ne comprends pas Match(CSng je ne l'ai jamais utlisé
If Colonne_Date = 0 Then Exit For

For j = 2 To Range("A" & Rows.Count).End(xlUp).Row

merci encore !!!!!!!!!!

Rebonjour,

En effet, par exemple dans mon autre feuille exportvp effectifs (ayant modifié la macro juste avant) , lorsuqe les sommes du fichier sont faites elle ne tiennent pas compte des dates et j'aimerai que cela soit le cas.

Dans le fichier joint : Feuille exportvp effectif (ligne 1, colonne I) demarre a 4/07/2022 lorsque je fait l'import cet import est affecter au début du recap or la date au début du recap est le 27/06/2022. DONC MAUVAISE SOMME

Je joint le fichier pour que vous voyais ce que j'ai modifié

7aide-vba.zip (96.91 Ko)

Je joint plutot ce fichier il est plus représenatatif de ce que je veux faire au final

6aide-vba.zip (147.76 Ko)

Salut,

Evite de placer un texte en vitesse, puis de placer un deuxième texte un moment après qui contredit le premier, puis un troisième texte qui contredit les deux premiers ; ça rend leur lecture et leur compréhension très difficile.

Essaie également d'être plus clair dans tes explications : il m'a fallu un sacré bout de temps afin de savoir ce que tu entendais par : "lorsuqe les sommes du fichier sont faites elle ne tiennent pas compte des dates et j'aimerai que cela soit le cas." !

Je pense avoir maintenant compris qu'il peut y avoir plus de date sur la feuille ''RECAP" que ce qu'il y en a sur la feuille à traiter et qu'il faut en tenir compte. Mais ce n'était pas clair dans ton premier fichier-modèle.

Ne change pas mes macros, sinon je ne saurais plus où l'on en est. Indique-moi sur le fil ce qui ne joue pas et je regarde afin de modifier moi-même la macro.

13aide-vba-v2.zip (145.65 Ko)


Byte ??? Voir https://www.excel-pratique.com/fr/vba/variables (scroller un peu vers le bas)

Colonne_Date = WorksheetFunction.Match(CSng(Cells(1, i)), .Range("17:17"), 0) : Match est la fonction VBA qui correspond à la fonction Excel EQUIV. Mais comme on ne peut pas chercher en VBA une date (inscrite dans la ligne 17 de la feuille RECAP) sur la base d'une autre date (celle inscrite dans la cellule Cells(1,i) de la feuille EXPORT VP ABS, on transforme la date à rechercher en nombre à l'aide de la fonction CSng(). Voir Fonctions de conversion de types (VBA) | Microsoft Docs

Rebonjour, merci pour votre réponse. désolé pour les de ne pas être claire .. J'essaye de résumer pour que vous compreniez mon problème

A partir du dernier fichier que vous avez joint il sera peu être plus facile de comprendre pour exécuter la macro..

Oui, le recap a un nombre infinit de date car planning a l'année je ne savais pas que cela avait une importance dans la macro pardonné moi

Je résume :

En effet, le planning dans le recap doit tenir compte de l'année entière puis 2022,2023.. Ceci-dit pour le moment la macro envoie les sommes issue de l'export vp abscence a partir du début du tableau or si la macro tient compte a la fois des dates dans le recap et dans les exports on pourras alors déposer les valeurs qui correspondant au bonne dates dans le recap.

Exemple : si l'exportvp abs démarre a la date 27/06/2022( cellule G1 de l'exportvp abs ) il faudra que dans le recap les sommes(pour cet export) dans le tableau ABS (du recap) démarrage a la colonne FX(car c'est la date ou est la date 27/06/2022 dans le recap). Car les exports changes chaque semaines il se peut que la semaines suivante j'ai un exportvp abs ( a mettre dans le recap) qui démarre au 12/07/2022. Si la macro comprends qu'elle doit faire les sommes des spécialités si seulement si les dates contenu dans le recap et dans l'export sont égale alors le tableau sera du recap sera mit a jours automatiquement a chaque nouvelle export.

ET merci pour l'explication de la macro

Merci d'avance si vous pouvez m'aider.

Salut,

Je n'ai pas tout compris de ta dernière explication, mais selon moi le dernier fichier que j'ai fourni réalise que que tu souhaites.

Ouvre celui-ci, lance la nouvelle macro par le bouton que tu as toi-même mis en place et vois que les données des dates présentes sur ta feuille source sont bel et bien reportées sous les bonnes dates de la feuille cible, non ?

Merci beaucoup il correspond parfaitement a ce que je voulais !

Encore mille mercii

Rebonjour,

J'aurai une question concernant la macro, je ne sais pas si il est possible d'ajouter une condition dans la macro. En effet, dans mes données bruts "EXPORTVP EFFECTIFS ";la macro Sub tableau_capacite() prends en compte des valeurs que je ne voudrais pas elle n'est pas assez sélective.

Il faudrais que la macro fasse toujours les mème sommes par spécialité (AVI,MEC....)ceci-dit avec d'autres conditions sur les colonnes suivantes

La macro doit faire la somme uniquement si elle trouve ces critères dans les colonnes suivantes;

Colonne A = 1_CDI et 2_CDD

Colonne B = AF

Colonne G = "Plan de charge"

Je vous met le fichier joint avec l'export pour que vous compreniez.

6aide-vvba2.xlsm (195.08 Ko)

Merci d'avance si vous pouvez m'aider.

MERCI

Salut,

Il est inutile de me contacter à deux endroits, je suis mes anciens fils.

Avec les macros, c'est assez embêtant d'ajouter des lignes, des colonnes, de déplacer des données, de changer le nom des feuilles, etc.. A éviter dans la mesure du possible.

Dans le fichier ci-joint, tu devrais avoir ce que tu souhaites.

Amicalement.

8aide-vba-v3.xlsm (205.19 Ko)

Merci beaucoup ! J'avais essayé avec une boucle while mais cela ne fonctionner pas ! merci encore

Rechercher des sujets similaires à "souci boucle while"