boucle selection condition excel - VB/VBA/VBS - Programmation
Marsh Posté le 09-08-2005 à 15:07:13
vatounet a écrit : Salut, |
Bonjour, pourquoi ne fais-tu pas simplement une boucle for?
Marsh Posté le 09-08-2005 à 15:15:07
Salut jpcheck,
oui je suis en train d'écrire un truc comme ça, mais j'ai l'impression d'écrire n'importe quoi dans une langue que je ne connais pas,
sub selection()
dim station as long
for each station in range ("a2":"a? la fin de mon tableau" )
if station <>null then
les lignes du tableau correspondant à valeur station.select
end if
next station
end sub
je crois que c'est tres mauvais
Fred
Marsh Posté le 09-08-2005 à 16:19:37
ton nombre de stations va-t-il bouger au cours du temps? si oui, en espérant que tu n'as pas de lignes sous tes stations, selectionne la premiere, donne lui le nom stations, vas dans insérer/ nom /définir et tape pour stations la fonction suivante
Code :
|
cette fonction te permet d'ajouter automatiquement la derniere station dans ta liste de stations, et tu fais
Code :
|
j'ai été clair?
Marsh Posté le 09-08-2005 à 16:48:00
Oui, tres clair pour la manip decaler nbval k c'est effectué
mais pour le code par contre je ne vois pas ou je vais,
quand j'écrit :
for each station
il m'envoi le message d'erreur disant que station doit etre un variant ou un object
quand j'écrit :
for each in station
le message d'erreur envoi "variable attendu"
Enfin, je ne trouve pas la bonne formule pour selectionner uniquement les lignes qui correspondent à station=x
j'ai recuperer un bout de code qui peut me servir, mais comment l'adapter à mon cas ?
Le moncritere doit correspondre dans mon cas à mes station ?
Sub Selection()
i = 1
While i < 200
If Cells(i, 1) = moncritere Then
MesLignes = MesLignes & i & ":" & i & ","
End If
i = i + 1
Wend
MesLignes = Left(MesLignes, Len(MesLignes) - 1)
With ActiveSheet
Application.Intersect(.Range(MesLignes), .UsedRange).Select
End With
End Sub
En tous cas merci d'avoir repondu
je continu ma macro "usine à graphique"
Fred
Marsh Posté le 10-08-2005 à 11:05:40
tu peux utiliser un compteur à incrémenter pour ton nombre de station sinon.
Pour ta méthode de graph, tu peut essayer de faire une fonction qui recoit le numero de la ligne et fait le traitement en fonction de ca
avec ton compteur en case q1
ton code ressemblerait à ca :
Code :
|
Marsh Posté le 10-08-2005 à 11:31:41
Salut jpcheck,
c'est sympa de repondre, tres sincerement merci
mais c'est du chinois, (experience vba=1 semaine) je bidouille des codes pour cette boucle dans tous les sens et forcement sa galere dur.
je comprend pas ta solution, et j'ai certainement mal expliqué mon probleme, voici un ex de tableau :
station date mesure
250311 1999 0,2
250311 2000 0,5
250311 2001 0,9
321000 1998 0,2
321000 1999 0,8
286412 1999 0,1
286412 2000 0,7
286412 2001 0,5
etc...
et ce que j'essai de faire
pour chaque station :
selectionne les lignes du tableau correspondantes
copie les lignes sur feuil2
"la mon graph se met à jour"
selectionne le graph
exporte le dans mon dossier
nettoie les cellules de la feuil2
et recommence depuis le debut avec la valeur de station suivante
bonne journée
Fred
Marsh Posté le 10-08-2005 à 11:49:04
vatounet a écrit : Salut jpcheck, |
tu cherches à traiter toutes tes stations ou seulement une que tu choisis dans une liste?
si tu cherches à toutes les traiter, la solution pourrait etre la suivante, avec toujours q1 en compteur:
Code :
|
la meilleure facon d'apprendre, c'est par soi meme, et eventuellement avec les autres ;-) J'ai un mois et demi de prog en vba derriere moi...
Marsh Posté le 10-08-2005 à 14:36:06
Salut vatounet,
J'ai dû traiter ce genre de "probleme" une fois j'ai un modifié et commenté mon code pour qu'il corresponde mieux à ton problème.
Code :
|
Le fait de passer par une liste permet d'éviter de traiter 2 fois ta station. La liste reste affichée en fin déxecution comme ça tu peux voir les graphiques que tu as créé.
la variable station est déclarée en public pour que tu puisses l'utiliser dans ta macro qui traite vraiement tes données.
Bon courage
Marsh Posté le 10-08-2005 à 18:05:54
Salut WATASHI,
je viens de lire ton message, merci beaucoup pour cette reponse,
J'étudie ta prose ce soir ou demain (j'ai du boulot)
Bonne soirée
A+
Fred
Marsh Posté le 09-08-2005 à 15:04:34
Salut,
Je debarque en vba et macro excel, donc j'expose mon probleme en français :
En feuille 1 j'ai un tableau avec 3 colonnes, la premiere s'apelle "station" et comporte des numeros de station.
J'ai une macro (3 sub) qui marche tres bien et effectue les operations suivantes :
Pour station=1 ou 2 ou 3 ou ...
selectionne la ou les lignes du tableau,
copie les lignes sur la feuille,
"A ce moment mon unique graphique de la feuille 2 se met à jour"
selectionne le graphique,
exporte le graphique en .gif dans un dossier,
Genial, mais à chaque fois je suis obligé de taper le numero de la station dans ma macro.
j'aimerais donc que ma macro face cette manip en boucle pour toute les valeurs de station, je galere depuis une semaine sur ce truc.
Si vous avez des trucs et astuces des bouts de codes, j'accepte tout.
D'avance merci et bonne journée,
Fred
Je peut envoyer le code de la macro si besoin !