MACRO BOUCLE WHILE IF THEN ELSE
Fermé
KOMENCAMARCHE00
Messages postés
26
Date d'inscription
mardi 8 novembre 2011
Statut
Membre
Dernière intervention
10 novembre 2011
-
8 nov. 2011 à 12:48
KOMENCAMARCHE00 Messages postés 26 Date d'inscription mardi 8 novembre 2011 Statut Membre Dernière intervention 10 novembre 2011 - 10 nov. 2011 à 09:59
KOMENCAMARCHE00 Messages postés 26 Date d'inscription mardi 8 novembre 2011 Statut Membre Dernière intervention 10 novembre 2011 - 10 nov. 2011 à 09:59
A voir également:
- MACRO BOUCLE WHILE IF THEN ELSE
- Macro word - Guide
- Macro logiciel - Télécharger - Organisation
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro recorder - Télécharger - Confidentialité
- Boucle cmd - Forum Programmation
16 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
Modifié par pijaku le 8/11/2011 à 13:05
Modifié par pijaku le 8/11/2011 à 13:05
Bonjour,
Il n'est pas utile de boucler sur chaque cellule d'une ligne pour trouver une valeur recherchée. Tu peux regarder du côté de la méthode find.
Un exemple pour chercher "Prénom" dans la ligne 1 :
Cordialement,
Franck P
Il n'est pas utile de boucler sur chaque cellule d'une ligne pour trouver une valeur recherchée. Tu peux regarder du côté de la méthode find.
Un exemple pour chercher "Prénom" dans la ligne 1 :
Sub cherche() Dim Trouve As Range Dim Valeur_cherchee As String Valeur_cherchee = "Prénom" Set Trouve = ActiveSheet.Rows(1).Cells.Find(what:=Valeur_cherchee) If Trouve Is Nothing Then MsgBox "Pas trouvé" Else MsgBox "Prénom trouvé en cellule : " & Trouve.Address End If Set Trouve = Nothing End Sub
Cordialement,
Franck P
KOMENCAMARCHE00
Messages postés
26
Date d'inscription
mardi 8 novembre 2011
Statut
Membre
Dernière intervention
10 novembre 2011
8 nov. 2011 à 13:21
8 nov. 2011 à 13:21
J'essaie de suite, merci beaucou
KOMENCAMARCHE00
Messages postés
26
Date d'inscription
mardi 8 novembre 2011
Statut
Membre
Dernière intervention
10 novembre 2011
8 nov. 2011 à 13:22
8 nov. 2011 à 13:22
Et pour afficher une valeur dans une cellule quand le résultat est atteint et non une message box, vois-tu une solution?
Merci
Merci
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
8 nov. 2011 à 13:29
8 nov. 2011 à 13:29
Bien sur....
Si tu veux un "X" en B1 :
Remplace :
Par :
Si tu veux un "X" sous la cellule ainsi trouvée en ligne 2 :
Remplace :
Par :
Si tu veux un "X" en B1 :
Remplace :
MsgBox "Prénom trouvé en cellule : " & Trouve.Address
Par :
[B1] = "X"
Si tu veux un "X" sous la cellule ainsi trouvée en ligne 2 :
Remplace :
MsgBox "Prénom trouvé en cellule : " & Trouve.Address
Par :
Trouve.Offset(1, 0) = "X"
KOMENCAMARCHE00
Messages postés
26
Date d'inscription
mardi 8 novembre 2011
Statut
Membre
Dernière intervention
10 novembre 2011
8 nov. 2011 à 13:31
8 nov. 2011 à 13:31
Une autre petite question:
Si la valeur à chercher est le résultat d'une fonction?
s'il s'agit d'une suite de dates dans laquelle trouver aujourdhui()?
Comment procéder?
Si la valeur à chercher est le résultat d'une fonction?
s'il s'agit d'une suite de dates dans laquelle trouver aujourdhui()?
Comment procéder?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
KOMENCAMARCHE00
Messages postés
26
Date d'inscription
mardi 8 novembre 2011
Statut
Membre
Dernière intervention
10 novembre 2011
8 nov. 2011 à 13:33
8 nov. 2011 à 13:33
Je suis impressionné par ta réactivité
KOMENCAMARCHE00
Messages postés
26
Date d'inscription
mardi 8 novembre 2011
Statut
Membre
Dernière intervention
10 novembre 2011
8 nov. 2011 à 13:34
8 nov. 2011 à 13:34
est-il possible de faire les deux:
Message box + B1?
Message box + B1?
Mihawk
Messages postés
4313
Date d'inscription
mercredi 29 mars 2006
Statut
Contributeur
Dernière intervention
6 janvier 2015
845
8 nov. 2011 à 13:37
8 nov. 2011 à 13:37
Evidemment :-)
'suffit de laisser les deux lignes et les deux seront exécutées
'suffit de laisser les deux lignes et les deux seront exécutées
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
8 nov. 2011 à 13:46
8 nov. 2011 à 13:46
Pour chercher une date attention!!!
Si dans ta ligne 1 les dates sont au format "date", il faudra que tu cherchers un "Valeur_Cherchée" au même format, c'est à dire en "date"...
Exemple :
Ne trouvera rien si dans la ligne 1 sont saisies des dates au format date.
par contre :
trouvera ce que tu cherches...
Dans la ligne : Valeur_cherchee = Date, Date est l'équivalant VBA de AUJOURDHUI()...
Et effectivement comme le dis si bien Mihawk (que je salues au passage), pour afficher le message ET écrire "X" en B1, il suffit de laisser les deux lignes. Exemple :
Si dans ta ligne 1 les dates sont au format "date", il faudra que tu cherchers un "Valeur_Cherchée" au même format, c'est à dire en "date"...
Exemple :
Dim Valeur_cherchee As String Valeur_cherchee = Date Set Trouve = ActiveSheet.Rows(1).Cells.Find(what:=Valeur_cherchee)
Ne trouvera rien si dans la ligne 1 sont saisies des dates au format date.
par contre :
Dim Valeur_cherchee As Date Valeur_cherchee = Date Set Trouve = ActiveSheet.Rows(1).Cells.Find(what:=Valeur_cherchee)
trouvera ce que tu cherches...
Dans la ligne : Valeur_cherchee = Date, Date est l'équivalant VBA de AUJOURDHUI()...
Et effectivement comme le dis si bien Mihawk (que je salues au passage), pour afficher le message ET écrire "X" en B1, il suffit de laisser les deux lignes. Exemple :
Sub cherche() Dim Trouve As Range Dim Valeur_cherchee As Date Valeur_cherchee = Date Set Trouve = ActiveSheet.Rows(1).Cells.Find(what:=Valeur_cherchee) If Trouve Is Nothing Then MsgBox "Pas trouvé" Else MsgBox "Date trouvée en cellule : " & Trouve.Address [B1] = "X" End If Set Trouve = Nothing End Sub
KOMENCAMARCHE00
Messages postés
26
Date d'inscription
mardi 8 novembre 2011
Statut
Membre
Dernière intervention
10 novembre 2011
8 nov. 2011 à 14:44
8 nov. 2011 à 14:44
TOUT SIMPLEMENT GENIAL
KOMENCAMARCHE00
Messages postés
26
Date d'inscription
mardi 8 novembre 2011
Statut
Membre
Dernière intervention
10 novembre 2011
8 nov. 2011 à 14:57
8 nov. 2011 à 14:57
Une dernière question:
Existe-t-il un équivalant maintenant()?
Existe-t-il un équivalant maintenant()?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
8 nov. 2011 à 15:08
8 nov. 2011 à 15:08
Oui.
Now
Now
KOMENCAMARCHE00
Messages postés
26
Date d'inscription
mardi 8 novembre 2011
Statut
Membre
Dernière intervention
10 novembre 2011
8 nov. 2011 à 15:13
8 nov. 2011 à 15:13
Et peut-on rechercher une valeur numérique positive?
KOMENCAMARCHE00
Messages postés
26
Date d'inscription
mardi 8 novembre 2011
Statut
Membre
Dernière intervention
10 novembre 2011
8 nov. 2011 à 15:19
8 nov. 2011 à 15:19
Il me semble alors devoir modifier:
Dim Valeur_cherchee As Date?
Par quelle expression?
Dim Valeur_cherchee As Date?
Par quelle expression?
KOMENCAMARCHE00
Messages postés
26
Date d'inscription
mardi 8 novembre 2011
Statut
Membre
Dernière intervention
10 novembre 2011
8 nov. 2011 à 15:26
8 nov. 2011 à 15:26
En fait, je cherche une macro qui afficherai une valeur ou une message box comme on l'a vu avant mais au moment ou la valeur de =maintenant() (par exemple: 14:05) dans la cellule A1 deviendrait supérieure à celle d'une cellule A2 donnée par:
5 minutes après
......
Je pense que je deviens lourd là............
5 minutes après
......
Je pense que je deviens lourd là............
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
8 nov. 2011 à 16:28
8 nov. 2011 à 16:28
Non tu n'es pas lourd................................
Je n'ai juste rien compris.
Comment veux tu que Now soit supérieur à maintenant + 5 min...
Comme je n'ai rien compris tu va tout ré-expliquer clairement.
Dans ta feuille il faut nous dire :
- ce que tu saisis,
- dans qu'elles cellules tu fais ces saisies,
- qu'elles sont les formules que tu utilises,
- ou sont ces formules,
- les formats appliqués à chacune de ces cellules (formules et saisies...),
- ce que tu souhaites obtenir...
Différencie bien les saisies "classiques" des formules.
Je n'ai juste rien compris.
Comment veux tu que Now soit supérieur à maintenant + 5 min...
Comme je n'ai rien compris tu va tout ré-expliquer clairement.
Dans ta feuille il faut nous dire :
- ce que tu saisis,
- dans qu'elles cellules tu fais ces saisies,
- qu'elles sont les formules que tu utilises,
- ou sont ces formules,
- les formats appliqués à chacune de ces cellules (formules et saisies...),
- ce que tu souhaites obtenir...
Différencie bien les saisies "classiques" des formules.
KOMENCAMARCHE00
Messages postés
26
Date d'inscription
mardi 8 novembre 2011
Statut
Membre
Dernière intervention
10 novembre 2011
8 nov. 2011 à 15:26
8 nov. 2011 à 15:26
Bien sur, j'actualise le =maintenant() par F9 avant de lancer la macro
KOMENCAMARCHE00
Messages postés
26
Date d'inscription
mardi 8 novembre 2011
Statut
Membre
Dernière intervention
10 novembre 2011
8 nov. 2011 à 17:00
8 nov. 2011 à 17:00
En fait j'ai changé le fond de ma question en cours de route sans faire attention à expliciter la nouvelle, c'était un peu au fil de ma pensée
- On oublie Now avec ma première question sur la valeur cherchée
- Maintenant j'essaie de faire une macro qui reprend les questions suivantes
Dans A1: =maintenant() (Ex: 16:00:00) (mais maintenant est exprimé en jjmmaaa hh:mm:ss, je ne voudrais que hh:mm:ss pour la suite)
Dans A2: =16:05:00 (dans cet exemple)
MACRO => ouverture d'une message box (il est l'heure, par exemple) quand =maintenant() devient égale à 16:05:00 en précisant que j'actualise le =maintenant() en pressant F9 avant de lancer la macro
J'espère avoir été plus clair comme ça
Merci
- On oublie Now avec ma première question sur la valeur cherchée
- Maintenant j'essaie de faire une macro qui reprend les questions suivantes
Dans A1: =maintenant() (Ex: 16:00:00) (mais maintenant est exprimé en jjmmaaa hh:mm:ss, je ne voudrais que hh:mm:ss pour la suite)
Dans A2: =16:05:00 (dans cet exemple)
MACRO => ouverture d'une message box (il est l'heure, par exemple) quand =maintenant() devient égale à 16:05:00 en précisant que j'actualise le =maintenant() en pressant F9 avant de lancer la macro
J'espère avoir été plus clair comme ça
Merci
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
8 nov. 2011 à 17:06
8 nov. 2011 à 17:06
Sub test() If CDate(Date) + CDate(Range("B1")) < CDate(Range("A1")) + CDate("00:05:00") Then MsgBox "c'est l'heure" Else MsgBox "c'est pas encore l'heure faignasse" End If End Sub
KOMENCAMARCHE00
Messages postés
26
Date d'inscription
mardi 8 novembre 2011
Statut
Membre
Dernière intervention
10 novembre 2011
8 nov. 2011 à 17:08
8 nov. 2011 à 17:08
LOL la deuxième message box!!!!!!!
KOMENCAMARCHE00
Messages postés
26
Date d'inscription
mardi 8 novembre 2011
Statut
Membre
Dernière intervention
10 novembre 2011
8 nov. 2011 à 17:04
8 nov. 2011 à 17:04
Avec les opérations sur les heures qui me paraissent complexes et le problème de passer de maintenant (jjmmaaaa hh:mm:ss) à 16:05:00 en hh:mm:ss, je pense utiliser une cellule, disons A3 pour tenter de soustraire ces deux heures pour obtenir une valeur en format standard qui sera alors une valeur positive ou négative, je chercherais donc à afficher cette message box quand A3 deviendrait négative.
Si cette démarche est la plus simple, sinon, je suis preneur de toute autre solution......
Si cette démarche est la plus simple, sinon, je suis preneur de toute autre solution......
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
9 nov. 2011 à 08:36
9 nov. 2011 à 08:36
Salut,
Quel est le but exact de cette procédure?
Sinon avec A3 en format nombre (ou standard) :
Quel est le but exact de cette procédure?
Sinon avec A3 en format nombre (ou standard) :
Sub test() If [A3] < 0 Then MsgBox "c'est l'heure" Else MsgBox "c'est pas encore l'heure faignasse" End If End Sub
KOMENCAMARCHE00
Messages postés
26
Date d'inscription
mardi 8 novembre 2011
Statut
Membre
Dernière intervention
10 novembre 2011
9 nov. 2011 à 15:41
9 nov. 2011 à 15:41
Une autre question pour aujourd'hui:
- J'ai une feuille de calculs assez complexe qui tourne sur les formules de les lois de la gravitation sans aucune macro, je ne travaillais qu'en formules à l'époque;
- Il me semble que les macro sont un outil beaucoup plus puissant qui me permettrait de revisiter mon fichier, il s'agit de déterminer les constantes de départ et de faire tourner les équations selon le principe:
Ma=
Mb=
xa= vxa= x'a=
xb= vxb= x'b=................etc........................
ya=
yb=
- Donc, j'espère qu'il existe un moyen de "passer en macro"
???? convertir les formules en macro??????
???? faire tourner un ensemble de formules en boucle en partant d'une plage de ma feuille??? peut-être de la feuille elle-même?????
MERCI BEAUCOUP D'AVANCE en espérant qu'il me sera possible de m'épargner la fastidieuse tâche de repartir de 0 et de retaper toutes mes formules en macro....................
- J'ai une feuille de calculs assez complexe qui tourne sur les formules de les lois de la gravitation sans aucune macro, je ne travaillais qu'en formules à l'époque;
- Il me semble que les macro sont un outil beaucoup plus puissant qui me permettrait de revisiter mon fichier, il s'agit de déterminer les constantes de départ et de faire tourner les équations selon le principe:
Ma=
Mb=
xa= vxa= x'a=
xb= vxb= x'b=................etc........................
ya=
yb=
- Donc, j'espère qu'il existe un moyen de "passer en macro"
???? convertir les formules en macro??????
???? faire tourner un ensemble de formules en boucle en partant d'une plage de ma feuille??? peut-être de la feuille elle-même?????
MERCI BEAUCOUP D'AVANCE en espérant qu'il me sera possible de m'épargner la fastidieuse tâche de repartir de 0 et de retaper toutes mes formules en macro....................
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
10 nov. 2011 à 07:55
10 nov. 2011 à 07:55
Bonjour,
Pas de souci, tout ou presque est faisable en VBA...
CEpendant, pour le coup, je te recommande d'ouvrir un nouveau sujet. Celui ci est résolu et ton problème d'aujourd'hui pourrait amener d'autres personnes qui t'aideraient. En effet, les nouveaux sujets sont plus lus que les anciens ici...
Par contre, tu devrais être plus précis car là je n'ai rien compris et ne peux rien faire à partir de cette explication...
Il s'agit de déterminer les constantes de départ ==> Comment les détermines tu jusqu'à aujourd'hui?
Puis de faire tourner les équations ==> Quels sont les formules de ces équations? Qu'entends tu par faire tourner?
OK?
Pas de souci, tout ou presque est faisable en VBA...
CEpendant, pour le coup, je te recommande d'ouvrir un nouveau sujet. Celui ci est résolu et ton problème d'aujourd'hui pourrait amener d'autres personnes qui t'aideraient. En effet, les nouveaux sujets sont plus lus que les anciens ici...
Par contre, tu devrais être plus précis car là je n'ai rien compris et ne peux rien faire à partir de cette explication...
Il s'agit de déterminer les constantes de départ ==> Comment les détermines tu jusqu'à aujourd'hui?
Puis de faire tourner les équations ==> Quels sont les formules de ces équations? Qu'entends tu par faire tourner?
OK?
KOMENCAMARCHE00
Messages postés
26
Date d'inscription
mardi 8 novembre 2011
Statut
Membre
Dernière intervention
10 novembre 2011
10 nov. 2011 à 09:59
10 nov. 2011 à 09:59
J'ai tenté toute l'après midi de créer un nouveau sujet mais n'y suis parvenu que hier soir, d'où ce poste
Je te réponds quand même ici:
- Les constantes de départs, masses de A et B; coordonnées de départ et vitesses de départ, idem;
- Après, j'ai mais formules qui déterminent (avec un pas que je détermine aussi) l'accélération entre les deux corps puis les nouvelles coordonnées, puis les nouvelles vitesses.....
Dans la première colonne de mon tableau j'ai les constantes initiales, dans une deuxième, les accélérations dans une troisième les nouvelles vitesses et encore une colonne pour les nouvelles coordonnées ETC.......
A chaque fois, des formules entre les grandeurs donnent les accélérations puis de nouvelles vitesses puis de nouvelles coordonnées en x et y.....
Suis-je plus clair?
MErci
Je te réponds quand même ici:
- Les constantes de départs, masses de A et B; coordonnées de départ et vitesses de départ, idem;
- Après, j'ai mais formules qui déterminent (avec un pas que je détermine aussi) l'accélération entre les deux corps puis les nouvelles coordonnées, puis les nouvelles vitesses.....
Dans la première colonne de mon tableau j'ai les constantes initiales, dans une deuxième, les accélérations dans une troisième les nouvelles vitesses et encore une colonne pour les nouvelles coordonnées ETC.......
A chaque fois, des formules entre les grandeurs donnent les accélérations puis de nouvelles vitesses puis de nouvelles coordonnées en x et y.....
Suis-je plus clair?
MErci