Boucle do while????

Fermé
mikapwel - 22 févr. 2010 à 09:46
 mikapwel - 19 avril 2010 à 11:26
Bonjour à tous,

J'aurais souhaité une petite aide sur un code ,utilisant la boucle "do while...loop".

Je vous explique le raisonnement;

Dans un tableau Excel ,je dois pouvoir récupérer toutes les lignes comprenant le meme prénom et y faire la somme total de ces données appartenant à ce meme prénom.
A savoir que ce prénom sera entrer par un utilisateur.

Je sais pas si j'ai été claire ,au pire faites le moi savoir...

Merci beaucoup.

20 réponses

Gord21 Messages postés 918 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 20 mars 2013 289
22 févr. 2010 à 12:45
Bonjour,
Je ne sais pas exactement où est ta question mais pourquoi ne pas utiliser la fonction NB.SI ?
0
garion28 Messages postés 1543 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 3 avril 2011 404
22 févr. 2010 à 12:48
while(condition d'entrée)
code
wend

ou bien

do
code
loop until(condition de sortie)

ou bien (j'aime pas trop celle là vu que c'est un mix des deux premiere)

do while(condition d'entrée)
code
loop
0
Gord21 Messages postés 918 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 20 mars 2013 289
22 févr. 2010 à 18:36
mikapwel,
Ne le prend pas mal, je ne pense pas qu'il y ait une leçon de moral. Suivant l'énoncé de ta question, je pensais que la fonction NB.SI() pouvait répondre à ton besoin. Quant à garion28, il (elle) te propose seulement 3 façons différentes d'écrire la boucle.
Peut-être que nous n'avons pas compris. Désolé.
0
Bonjour,me revoilà !!!comment ça va today!?

Voici les vraies questions;

je dois créer un fichier excel de gestion de congés.
Un utilisateur ,va inscrire ds ce fichier des noms ,ainsi que leur nombre de congés et d' autre infos .
1-ce fichier doit pouvoir lorsque le gestionnaire rentre un nom ,rechercher tous les congés associer a ce
nom et en faire la somme.

2-après avoir sélectionner la date de début de congés (sélectionner ds calendar excel) et noter le nombre de jours de congés ,ce fichier doit calculer la date de retour et me l afficher en format date.

Il me faudrait un code pour le 1 et le 2.

Merci beaucoup en espérant que g été assez clair ds ma dde.

Peace.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
garion28 Messages postés 1543 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 3 avril 2011 404
23 févr. 2010 à 10:15
nous ne faisons pas les devoirs des posteur (c'est la charte)
0
ah non ce n'est pas du tout un devoir ,jsuis admin réseaux ds une boite ,ça n a rien a voir !!g juste proposer de le faire mais vba c pas du tout mon fort!!

pas grave,merci kan mem!

a bientot
0
garion28 Messages postés 1543 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 3 avril 2011 404
23 févr. 2010 à 12:50
je sais pas si c'est la même chose chez toi, mais moi je voi des é a la place des accents, ce qui rend ta demande illisible
0
Gord21 Messages postés 918 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 20 mars 2013 289
23 févr. 2010 à 18:05
Bonjour

1-ce fichier doit pouvoir lorsque le gestionnaire rentre un nom ,rechercher tous les congés associer a ce
nom et en faire la somme
.
Comment veux tu que l'utilisateur entre son nom (quelle type d'interaction) ?
Où rechercher les congés ? (ce classeur excel, un autre fichier, ...)

0
Bonjour Gord21,

Excuse moi de ne pas t avoir répondu de suite je bossais sur ce projet ,j'ai réussi à tout faire sauf le premier point ,ou j'ai séché car g du mal à utiliser les formules matricielles...

Pour te répondre ,j'avais penser à une interaction du genre il rentre le nom recherché dans une cellule et avec un bouton OK sur une feuille différente(Feuille 2) et le calcul s'effectue.

les congés seront rentrer par un gestionnaire sur la Feuille 1 donc dans ce classeur.


Merci.
0
Gord21 Messages postés 918 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 20 mars 2013 289 > mikapwel
27 févr. 2010 à 15:19
Bonjour,
Est-ce que tu aurais un exemple de fchier ? Ca ma permettra de voir où sont les données.
@+
0
mikapwel > Gord21 Messages postés 918 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 20 mars 2013
27 févr. 2010 à 23:04
Bonsoir Gord21,

Tu est mon sauveur !!!!!!!!!!!!!!!lol
g très bien avancé cependant il me manque deux choses à accomplir ce week-end ,c pouvoir deployer mes macros pour pour une colonne entière respectives(pres de 500 noms,données,etc...).
Et la seconde chose,c'est de pouvoir faire la somme de ce qui est sélectionné.
Je c pas si c la fatigue mais je ne vois pas comment t'envoyer mon fichier,aurais -tu une adresse à communiquer sinon??

Merci bokou Gord21.
0
Gord21 Messages postés 918 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 20 mars 2013 289 > mikapwel
27 févr. 2010 à 23:26
Bonsoir,
Oui, tu vas sur le site cijoint.fr par exemple, tu déposes ton fichier, tu copies le lien et tu le colles dans ton prochain post.

@+
0
mikapwel > Gord21 Messages postés 918 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 20 mars 2013
28 févr. 2010 à 07:43
Bonjour Gord21,


En ouvrant mon fichier excel ce matin ,j'ai constaté que toute les modifications que j'avais effectuées sur la version excel du bureau c a dire 2003 n'ont pas été prise en cpte sur mon excel maison ,la version beta 2010.

Donc si tu ne vois rien c pour cela ,pour ma part j en suis degouté, jvais l 'eesayer sur le 2007 si je peux!!!
0
http://www.cijoint.fr/cjlink.php?file=cj201002/cijMxyzjFy.xls:voici le lien!!

merci.
0
Gord21 Messages postés 918 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 20 mars 2013 289
28 févr. 2010 à 23:21
Bonsoir
Effectivement, ton fichier ne contient pas beaucoup d'éléments qui puissent m'orienter sur ton besoin.
Que veut dire : c pouvoir deployer mes macros pour pour une colonne entière respectives ?

@+
0
Bonsoir Gord21,

j'ai retravaillé mon fichier le voici:

http://www.cijoint.fr/cjlink.php?file=cj201003/cijhOsQfYT.xls

-j explicite ma question:en fait pour premier exple g defini une application calendrier a la ligne 4,j aurais souhaité kel soit deployer pour tte la colonne"date initiale"
Meme choz pour la formule des "RTT deduit" ,ne connaissant pas tro vba g du mal a deployer ou creer une boucle pour tte la colonne.

j'aimerais avoir ton avis ,g crée un tablo "total" pour recupérer toutes les données d 'un utilisateur .dois je les recupérer ds le fichier excel ou ds le userform"recherche"???


Merci bokou de ton aide.
0
Gord21 Messages postés 918 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 20 mars 2013 289
1 mars 2010 à 21:41
Bonsoir,
Je t'avoue que j'ai vraiment du mal à faire le lien entre tes questions et ton fichier. Dans ton post 13, tu dis : j'avais penser à une interaction du genre il rentre le nom recherché dans une cellule et avec un bouton OK et dans ton fichier, tu sembles vouloir utiliser une fenêtre personnalisée. D'après ce que j'ai compris l'application que tu évoques dans ton post 20 est l'utilisation de l'évênement SelectionChange. Dans ce cas le déploiement peut se faire en modifiant le code
If Target.Address <> "$C$4" Then Exit Sub

par
If ((Target.Column <> 3) And (Target.Address <> "$C$1")) Then Exit Sub

La colonne C correspond à 3 et on exclu C1 (en-tête)

Pour mon avis, je partirais soit sur un rassemblement des données sur une feuille Excel soit sur un tableau dans un UserForm (type Spreadsheet et non un ensemble de champs de textes). Ce sera plus facile dans la mesure où tu ne connais pas par avance le nombre de congés ou champs qu'il te faudra.
0
Bonsoir Gord21,

tu as complètement raison car étant novice à chaque découverte sur vba j'essayer de les utiliser pour accomplir ce projet.
oui c vrai kil suffit de changer le code pour l application calendrier mais ne connaissant pas le nbre de nom ke l 'on va entrer j aurais souhaité une sorte de boucle....

maintenant que tu as le fichier sous les yeux ça sera plus facile!!lol
c vrai ke j aurais préférer ke l 'utilisateur rentre un nom afin d'en trouver et regrouper toutes les infos mais ne sachant pas le faire jme suis débrouiller.

de plus tu as soulevé un vrai point ,je pense que ta solution d'un tablo userform de type Spreadsheet est le plus approprié,mais koment le mettre en place ds le code ke g deja?!

et enfin tu vas me trouver saoulant est ce que le spreadsheet me permettra justement de pouvoir regrouper les données ke je souhaite afin d 'en faire le total ds 'userform créer pour ça??

en tout cas je tenais a te remercier de ton aide et de me donner de ton tps!!merci
0
garion28 Messages postés 1543 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 3 avril 2011 404
2 mars 2010 à 09:02
bonjour,
voila ce que je pense avoir compris en survolant ton fichier et tes post:
tu veu pouvoir afficher les rtt et autres info suivant un nombre de paramètre défini, par exemple un nom et prénom pour afficher l'historique pour une personne ou bien rajouter en plus une date pour avoir des infos plus précise dans le temps
c'est ca ?
0
Bonjour Garion28,

comment vas tu depuis la derniere fois??!

ben g bokou avancé ,mais la je reste vraiment bloké ,je t envoie mon fichier pour ke tu puisses visualiser mes besoins;

http://www.cijoint.fr/cjlink.php?file=cj201003/cijhOsQfYT.xl­s

Mais en gros voici cke g voulu creer:
imaginons ke tu sois un gérant ,et je crée pour toi un fichier ki te permet de rentrer tout t employés avc leur jours de congés ,rtt deduit régit en fonction de la loi.
et ce fichier te permet si tu le souhaites d 'afficher tout t employés et de les pouvoirs les triers par leur nom(c mon userForm "Recherche",ensuite de faire le total du nbre de jours de congés pour un employé(userForm "total").

Mais mon gros souci c de pouvoir deployer premierement ma macro calendrier pour toutes les lignes de ma colonne "date initiale" et recuperer ds mon tablo "recherche" les donnée regroupés et triés d 'un seul employé pour les additionner ds mon tablo "total"!!!

J'espere ke cette fois ci gt etait assez explicite et compréhensible!!


merci de votre aide a tous les deux!!!!
0
garion28 Messages postés 1543 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 3 avril 2011 404
2 mars 2010 à 11:16
ca va bien merci :)

quand j'ouvre ton fichier j'ai une erreur (du coup j'ai supprimé le fichier)
j'ai bien vu qu'il y avai différentes info réparti en colonne, a chaque ligne correspond un nom lié au info personnel sur les rtt etc...

donc quand tu veu lancer la recherche des info d'un employé:
- la liste des employé doit etre ajouté dans la combobox sans doublon (pour ca tu peu utiliser un tableau où tu ajoutera les noms s'ils n'ont pas été croisé, donc une boucle vérifiera a chaque ligne s'ils n'est pas dans le tableau)
- lorsque le nom est choisi dans la combobox tu doit faire une boucle pour parcourir tout tes enregistrement afin d'afficher la ou les dates pour la personne choisi, voila du code pour trier afin de faciliter la recherche dans le cas ou tu aurai plusieurs lignes pour une même personne
    Application.ScreenUpdating = False
    Sheets("planningtc").Select 'ici tu met le nom de la feuille ou se déroulera le tri
    Range("A1:CE65536").Select 'remplace le A1:CE65536 par les limites de la zone ou seront tes données (par exemple si tes données commence en A2 et finissent en F2 tu marque A2:F65536 afin que le tris se fasse sur toutes cette zone
    Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom 'le key1:=range("A1") signifie que ce sera trié sur la cellule A1 dans l'ordre croissant, dans ton cas ce sera A2 car tes données commence en A2 (toujours dans le cas ou tes données sont de A2 a F65536 comme au dessus). la liste des nom (colonne A) seront donc trié de A -> Z 
Application.ScreenUpdating = True

- quand le nom sera trouvé du aura le numéro de la ligne d'où commencera les info pour la personne choisi


si je suis a coté de la plaque ou autre tu le dis
0
c balo pour le fichier !! jte remets un autre lien pour ke tu puisses vraiment visualiser:

http://www.cijoint.fr/cjlink.php?file=cj201003/cijWT0Rj25.xls

tu n 'est pas à coté de la plaque.ds le fichier excel le nom d'une personne peut revenir des mutiples fois car tout dépends de la date initiale.
je n 'avais pas pensé à la combobox c pour ça ke g utilisé un une listbox.

j 'espère vraiment ke cete fois-ci tu pourras ouvrir le fichier
0
garion28 Messages postés 1543 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 3 avril 2011 404
2 mars 2010 à 12:38
ah j'ai trouvé ou était l'erreur, c'est en G5 (=somme(C5;G5) )
et j'avai déja pus ouvrir le fichier, donc yavai pas de probleme de ce coté là :)

donc en clair, qu'est ce que tu veu faire avec ton fichier ? (pas la peine de parler de gérant qui veut gérer les congés, c'est bien trop vague et inutile dans la programmation :) )

pour le moment:
- tu veu afficher la liste des personnes enregistré (sans doublon)


a toi de finir la liste :)
0
Bonsoir mes contacts préférés,

Alors jvais faire un listing de mes actions et arrétés mes exposés!!!mdrr

-premierement je veux creer un fichier excel ou l'on rentre un utilisateur rentre les données(juske la facile)
-ds ce fichier creer une macro utilisant le controle calendar pour pouvoir choisir une date et cela pour toute la colonne correspondante(une boucle)
-creer soit sous forme d'un bouton ou boite de dialogue un espace recherche ou l'on entrera un nom d'employé quelconque(le choix de la boite de dialogue),et apres avoir entrer ce nom le résultat devra afficher toutes les lignes du fichier comportant ce nom avc toutes les données y associés.

et enfin avc ces données calculer le total actuel (au jour ou l on a dder ce total),du nbre total de jours de conges,jours ouvres et rtt deduit.

j'espere que g reussis à me faire comprendre,sinon vive l'oral!!!!!!!!!


merci
0
Gord21 Messages postés 918 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 20 mars 2013 289
2 mars 2010 à 22:59
Bonsoir,
Pour faire un UserForm avec un tableau, tu ajoutes un contrôle SpreadSheet.
Je reprend la quetion de garion28, qu'est ce que tu veu faire avec ton fichier
Pour avancer, il faudrait que tu décrives le plus précisément possible les actions que tu souhaites faire et les points qui bloquent.
J'ai un listing des employés du service sous forme d'un fichier Excel.
Je veux qu'à l'ouverture du fichier une boîte de dialogue me propose...
Quand je valide, ça fait ...
Si le nom saisi n'éxite pas ...


@+
0
garion28 Messages postés 1543 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 3 avril 2011 404
3 mars 2010 à 09:19
deux paramètre sont donc important dans ton contexte, le nom de l'employé et une date. le truc c'est de savoir de quel date il sagit
tu as le choix de:
- mettre une date au hasard afin de sortir le nom de toutes les personnes en congé a cette date, ce qui implique de vérifier que la date saisi soit supérieur a la date de début et inférier a la date de fin
- mettre une date de début, ce qui te sortira tout les congé commencant a cette date
- mettre une date de fin, etc... comme au dessus

le premier tiret regroupe les deux suivant. cependant si tu met une date qui n'est pas référencé dans les congé, ca te sortira un formulaire vide. tu peu aussi faire en sorte d'afficher dans un combobox toutes les dates où il y a des congés (c'est assez technique a faire puisqu'il ne suffit pas de prendre la date de congé la plus petite et la plus grande et afficher toutes les dates entre celle ci)

en réfléchissant a ca je vien de penser a un truc a mettre en place (si tu n'y avai pas déja pensé avant). ce serai un formulaire avec deux champs de recherche: le premier contiendrai tout les employé de la liste des congé et la deuxième contiendrai toutes les dates
tu peu pousser le vice jusqu'à créer la liste des dates en fonction de l'employé rentré et inversement grace a un bouton

une fois les paramètres choisi ca te ressortirai tout les congé ayant le nom de l'employé et la date (la variante serai d'afficher tout les employé ayant la date ou bien toutes les dates de l'employé, mais ca rejoins mon idée du paragraphe du dessus)
0
Gord21 Messages postés 918 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 20 mars 2013 289
3 mars 2010 à 22:13
Bonsoir,
Ta demande commence à s'éclaircir. Est-ce qu'un tableau croisé dynamique ne suffirait pas ?
@+
0
Bonsoir mes contacts,


l'idée du tablo croisé dynamique peut etre une bonne idée ,mais surtout les actions après ki me pose problème...

garion:le seul critère important est le nom ,car les dates y sont associés.le gerant voudra juste taper le nom d'un employé et que cela affiche tous ces conges avc date,nbre de conges ect....et le resultat final sera de faire le total de tous ses nbre de congés.


qu'en pensez vous?quelle orientation me donnez vous??!je dois le rendre a mon pote maxi lundi



merci
0
garion28 Messages postés 1543 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 3 avril 2011 404
4 mars 2010 à 11:26
bon ben là je sais a quoi m'en tenir :)
tu rempli ta combobox avec tout les nom d'employé sans doublon puis après tu n'as plus qu'à chercher dans ta feuille toutes les lignes concernant le nom

où es là difficulté ? (qu'on puisse te donner les outils pour le faire)
0
Bonsoir garion28,

je suis content de m'avoir enfin fait comprendre ,jdois avoir de gros souci à l'ecrit!!lol

cependant ta question sur la difficulté est ironique ,ou ct juste ma réponse?!

en tout merciiiiiiiiiiiiiiiiiiiiiiii
0
garion28 Messages postés 1543 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 3 avril 2011 404
5 mars 2010 à 08:07
"cependant ta question sur la difficulté est ironique ,ou ct juste ma réponse?! "
je dirai les deux ^^
chercher dans la liste les lignes concernant l'employé n'est pas franchement dur
tu fait un truc genre:
dim i as integer
dim lgn as integer
i=1
while activesheet.range("A" & i).value<>""
if activesheet.range("A" & i).value=nom_employe then
lgn=i
end if
wend

lgn contiendra la ligne concernant ton employé
tu peu mettre lgn en tant que tableau pour avoir plusieurs ligne concernant l'employé
0
Bijour garion28 ,comment vas tu? ça fait un bail je c en tout cas merci pour l aide ,grace à vous jmy suis un peu mis au vba.

Jte contacte car g un gros souci g encore besoin de ta gde aide,j'essaye d etre clair ds mon explication:

1] g dévellopé pour le boulot une application ki permet d'effectuer une recherche via une listbox,et en selectionnant cette recherche l'afficher dans un tableau excel :
Mon gros souci c ke je récupere ke l'index de la listbox je n'arrive pas à récupérer toutes les infos de la ligne pour remplir les colonnes excel!!!!!!!!!!!voici mon code:

Private Sub ListBoxLocataire_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
ligSelect = ListBoxLocataire.Column(7, ListBoxLocataire.ListIndex)

Dim element As Object
Dim MaListe As String


MaListe = ""

For Each element In ListBoxLocataire_DblClick()
MaListe = MaListe & element
Next element

Range("A9:E9").Value = MaListe
End Sub

Et mon second gros souci,c ke g creer un userform pour ke l'user puissent renseigner des champs textbox pour remplir directement le tableau excel .g réussi à creer l'userform mais je n'arrive pas à remplir les champs de mon tablo excel,voici le code ke g fait:

Private Sub UserForm_Click()
Dim i As Integer

For i = 11 To 100
Do While i > 10

txtCritere1.Value = Range("A").Value
txtCritere2.Value = Range("B").Value
txtParam1.Value = Range("C").Value
txtParam2.Value = Range("D").Value
txtParam3.Value = Range("E").Value

Loop
Next i

Exit Sub

End Sub

J'espere bokou ke je n'abuse pas en te demandant de m'aider ,ça serait cool si tu pouvais me corriger!!

merciiiiiiiiiiii
0