XL 2013 Excel VBA - Extraire des valeurs numériques d'une cellule mélangeant texte et valeurs numériques

  • Initiateur de la discussion Initiateur de la discussion elio_30
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

elio_30

XLDnaute Nouveau
Bonjour,

Voilà, pour vous donner un peu de contexte, je suis en train de créer une macro qui crée un diagramme de Gantt. La première feuille contient toutes les taches à réaliser, leur durée et leurs antécédents (les taches qu'il faut obligatoirement avoir faites avant). Sur la deuxième feuille, une tâche par ligne (encore) et un jour par colonne, la macro colorie les cases pendant laquelle la tache est en cours.

Voilà, j'ai une cellule (la J47) mélangeant du texte et des valeurs numériques de la manières suivante sur ma feuille1:

=A10&", "&A17&", "&A45&" et "&A14 (ce qui donne "10, 17, 45 et 14")
ou =CONCATENER(A10;", ";A17;", ";A45;" et ";A14)

Dans une macro (j'ai commencé aujourd'hui, je suis un bleu),
j'ai besoin de récupérer ces valeurs numériques et les utiliser pour vérifier si la condition "tableau(10)<>0 ET tableau(17)<>0 ET tableau(45)<>0 ET tableau(17)<>0" est vérifiée ou pas. Et si cette condition est vérifiée, associer le maximum des tableau(10), tableau(17), etc à la variable locale 'maxi'.
J'aimerais donc obtenir un bout de code permettant de faire cela et fonctionne que la case soit:

10, 17, 45 et 14
ou
17, 49 et 14
ou
45 et 19
ou
23

Merci pour votre aide, et désolé si ce n'est pas clair.

Elio
 
Dernière édition:
Solution
Bonjour,

Voilà, pour vous donner un peu de contexte, je suis en train de créer une macro qui crée un planning en coloriant des cases. La première feuille contient toutes les taches à réaliser, leur durée et leurs antécédents (les taches qu'il faut obligatoirement avoir faites avant). Sur la deuxième feuille, une tâche par ligne (encore) et un jour par colonne, la macro colorie les cases pendant laquelle la tache est en cours.

Voilà, j'ai une cellule (la J47) mélangeant du texte et des valeurs numériques de la manières suivante sur ma feuille1:

=A10&", "&A17&", "&A45&" et "&A14 (ce qui donne "10, 17, 45 et 14")
ou =CONCATENER(A10;", ";A17;", ";A45;" et ";A14)

Dans une macro (j'ai commencé aujourd'hui, je suis un bleu),
j'ai...
Bonjour,

Voilà, pour vous donner un peu de contexte, je suis en train de créer une macro qui crée un planning en coloriant des cases. La première feuille contient toutes les taches à réaliser, leur durée et leurs antécédents (les taches qu'il faut obligatoirement avoir faites avant). Sur la deuxième feuille, une tâche par ligne (encore) et un jour par colonne, la macro colorie les cases pendant laquelle la tache est en cours.

Voilà, j'ai une cellule (la J47) mélangeant du texte et des valeurs numériques de la manières suivante sur ma feuille1:

=A10&", "&A17&", "&A45&" et "&A14 (ce qui donne "10, 17, 45 et 14")
ou =CONCATENER(A10;", ";A17;", ";A45;" et ";A14)

Dans une macro (j'ai commencé aujourd'hui, je suis un bleu),
j'ai besoin de récupérer ces valeurs numériques et les utiliser pour vérifier si la condition "tableau(10)<>0 ET tableau(17)<>0 ET tableau(45)<>0 ET tableau(17)<>0" est vérifiée ou pas. Et si cette condition est vérifiée, associer le maximum des valeurs à la variable locale 'maxi'(ici le max serait donc de 45).
J'aimerais donc obtenir un bout de code permettant de faire cela et fonctionne que la case soit:

10, 17, 45 et 14
ou
17, 49 et 14
ou
45 et 19
ou
23

Merci pour votre aide, et désolé si ce n'est pas clair.

Elio
Bonjour,
Je n'ai pas tout compris...
Néanmoins, pour récupérer la valeur max de J47 ce code
VB:
Sub test()
    Dim x, c, y&, tmp$
    tmp = Replace([j47], "et", ",")
    x = Split(tmp, ",")
    For Each c In x
        If c > y Then y = c
    Next
    MsgBox "Max = " & y
End Sub
 
Bonjour,
Je n'ai pas tout compris...
Néanmoins, pour récupérer la valeur max de J47 ce code
VB:
Sub test()
    Dim x, c, y&, tmp$
    tmp = Replace([j47], "et", ",")
    x = Split(tmp, ",")
    For Each c In x
        If c > y Then y = c
    Next
    MsgBox "Max = " & y
End Sub
Bonjour Jacky67,

Merci beaucoup pour ton aide, ton code fonctionne parfaitement.
je vais essayer de l'adapter un peu à mon programme mais ça devrait le faire! 🙂)

Bonne soirée!
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour