Bonjour
Dans un fichier excel (2003), je cherche à afficher le résultat d’un calcul dans un feuillet « Calculs» à partir des données de la colonne Y du feuillet « Données ». Jusque là pas de problème. Je précise qu’il y a des trous dans la colonne à partir de laquelle je fais mes calculs de sorte que pour effectuer mes calculs, je me réfère à la colonne A qui elle n’en a pas
Je sélectionne mes cases dans la colonne Y et fait mes calculs avec une condition si écrit de la sorte :
Do While Range("A" & STR_INDICE) <> ""
If Range("Y" & STR_INDICE) <> "" And Range("Y" & STR_INDICE) >99 Then
i=i+1
STR_INDICE = STR_INDICE + 1
Loop
Bien sur, je fais d’autres calculs, mais ça reste très simples: nombre de valeur dans la colonne moyenne, valeur maxi, mini, écart-type.
Par contre, j’ai besoin de trié mes calculs de manière automatiques, en fonction de données rentré dans une autre colonne. Dans cette colonne on trouve des motifs en as, as01, as02, ca, ca01…
Je voudrais donc, via une macro déclenchée par un bouton, faire mes calculs avec les données de la colonne Y correspondant aux lignes de la colonne E, ayant pour « motif » ceux qui commenceront par AS en cliquant sur le bouton 1, ou bien par CA en cliquant sur le bouton 2, ou bien par autre chose ( et là je ferais un bouton correspondant au nouveau « motif », inscrit dans la colonne).
Le nombre de motif CA, ou AS, pouvant varier dans le temps, je pense que la meilleure solution serait d’utilisé les expressions régulières.
Je ne bute pas sur le pattern à priori, mais plutôt sur son utilisation. Et étant apprenti sorcier je ne maitrise pas encore ses arts occultes que sont VBA en général et les expressions régulières dans VBA en particulier.
J’ai « tripoté » mon code dans de nombreux sens, lu des tutoriaux, re-"tripoter" mon code lu tout ce que je pouvais sur divers forums et "re-re-tripoté" mon code ,mais bon, rien y fait.
Pour l’instant j’ai un code comme celui-ci, mais qui bien sûr ne marche pas ca il a de nombreuses fautes, j'en suis conscient:
Dim MOTIF As New VBScript_RegExp_55.RegExp
MOTIF.Pattern = "CA [0-9]{0,2}"
MOTIF.IgnoreCase = False
Dim Match As VBScript_RegExp_55.Match
Dim Matches As VBScript_RegExp_55.MatchCollection
Dim VALEUR_MOTIF As string
Do While Range("A" & STR_INDICE) <> ""
VALEUR_CASE = Range("AA" & STR_INDICE)
VALEUR_MOTIF = Range("E" & STR_INDICE)
If Range("AA" & STR_INDICE) <> "" Then
If VALEUR_MOTIF = True Then STR_COMPTEUR= STR_COMPTEUR + 1
End If STR_COMPTEUR= STR_COMPTEUR + 1
End If
Loop
Si vous pouviez m’aider ou me corriger, j’en serais ravi.
Je précise que je suis en stage en entreprise du Lundi au Mercredi et que je ne pourrais pas tester entre ses jours-là, vos réponses.
Staco
Dans un fichier excel (2003), je cherche à afficher le résultat d’un calcul dans un feuillet « Calculs» à partir des données de la colonne Y du feuillet « Données ». Jusque là pas de problème. Je précise qu’il y a des trous dans la colonne à partir de laquelle je fais mes calculs de sorte que pour effectuer mes calculs, je me réfère à la colonne A qui elle n’en a pas
Je sélectionne mes cases dans la colonne Y et fait mes calculs avec une condition si écrit de la sorte :
Do While Range("A" & STR_INDICE) <> ""
If Range("Y" & STR_INDICE) <> "" And Range("Y" & STR_INDICE) >99 Then
i=i+1
STR_INDICE = STR_INDICE + 1
Loop
Bien sur, je fais d’autres calculs, mais ça reste très simples: nombre de valeur dans la colonne moyenne, valeur maxi, mini, écart-type.
Par contre, j’ai besoin de trié mes calculs de manière automatiques, en fonction de données rentré dans une autre colonne. Dans cette colonne on trouve des motifs en as, as01, as02, ca, ca01…
Je voudrais donc, via une macro déclenchée par un bouton, faire mes calculs avec les données de la colonne Y correspondant aux lignes de la colonne E, ayant pour « motif » ceux qui commenceront par AS en cliquant sur le bouton 1, ou bien par CA en cliquant sur le bouton 2, ou bien par autre chose ( et là je ferais un bouton correspondant au nouveau « motif », inscrit dans la colonne).
Le nombre de motif CA, ou AS, pouvant varier dans le temps, je pense que la meilleure solution serait d’utilisé les expressions régulières.
Je ne bute pas sur le pattern à priori, mais plutôt sur son utilisation. Et étant apprenti sorcier je ne maitrise pas encore ses arts occultes que sont VBA en général et les expressions régulières dans VBA en particulier.
J’ai « tripoté » mon code dans de nombreux sens, lu des tutoriaux, re-"tripoter" mon code lu tout ce que je pouvais sur divers forums et "re-re-tripoté" mon code ,mais bon, rien y fait.
Pour l’instant j’ai un code comme celui-ci, mais qui bien sûr ne marche pas ca il a de nombreuses fautes, j'en suis conscient:
Dim MOTIF As New VBScript_RegExp_55.RegExp
MOTIF.Pattern = "CA [0-9]{0,2}"
MOTIF.IgnoreCase = False
Dim Match As VBScript_RegExp_55.Match
Dim Matches As VBScript_RegExp_55.MatchCollection
Dim VALEUR_MOTIF As string
Do While Range("A" & STR_INDICE) <> ""
VALEUR_CASE = Range("AA" & STR_INDICE)
VALEUR_MOTIF = Range("E" & STR_INDICE)
If Range("AA" & STR_INDICE) <> "" Then
If VALEUR_MOTIF = True Then STR_COMPTEUR= STR_COMPTEUR + 1
End If STR_COMPTEUR= STR_COMPTEUR + 1
End If
Loop
Si vous pouviez m’aider ou me corriger, j’en serais ravi.
Je précise que je suis en stage en entreprise du Lundi au Mercredi et que je ne pourrais pas tester entre ses jours-là, vos réponses.
Staco