unglued
Messages postés24Date d'inscriptionmercredi 9 janvier 2008StatutMembreDernière intervention28 mars 2008
-
20 mars 2008 à 18:26
unglued
Messages postés24Date d'inscriptionmercredi 9 janvier 2008StatutMembreDernière intervention28 mars 2008
-
26 mars 2008 à 11:15
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 20 mars 2008 à 22:34
Salut,
je ne connais pas grand chose au VB6 mais il me semble que la fonction range est specifique a excel. Donc si je ne me trompe pas ben unglued tu n'es pas dans le bon theme.
bouf , un objet range comme son nom l'indique est un objet donc il faut
utiliser Set pour assigner un objet a une variable. Ta methode
fonctione si tu concatenes les valeurs contenues dans ces objets
Ce que je comprend de la question de unglued c'est qu'il souhait faire une union d'objet range donc pour cela:
Dim x_values As Range
Set x_values = Union(Range("A1") ,Range("B1"))
unglued
Messages postés24Date d'inscriptionmercredi 9 janvier 2008StatutMembreDernière intervention28 mars 2008 25 mars 2008 à 13:23
pour repondre a Bouf :
Set x_values = Range("A1") & Range("B1")
ne marche pas sur mon VB, je ne sais pas si jai une version differrente mais le programme ne se compile pas...
(et au passage je ne voit pas en quoi mon francais est incomprehensible :( )
La methode de Bigfish marche bien, ainsi que celle de Rienfield!
Donc merci a vous 2 je vais continuer mon pti programme, et a la prochaine galere je reviendrais vous demander un coup de main...
unglued
Messages postés24Date d'inscriptionmercredi 9 janvier 2008StatutMembreDernière intervention28 mars 2008 25 mars 2008 à 14:00
Bon aussitot apres avoir accepter les reponses, me revoila :)
bon je vous donne tout de suite mon probleme et je vous mettrais plus bas tout mon programme, pour savoir si il n'y aurais pas une moyen plus simple de resoudre ce que je veux faire.
alors mon probleme est qu'il y a une difference entre cette ligne
Set x_values = Range("A1,D10")
et celle ci
Set x_values = Range("A1","D10")
l'une selectione juste A1 et D10, l'autre selectionne la table en A1 et D10
bon voila ce que je veux faire
je veux recuperer dans une variable de type range des donnees qui sont en collone, malheuresement les donnee qui m'interresse se trouve toute les 4 lignes
donc jai taper ca :
Dim x_values As Range
Dim y_values As Range
Dim axe_X As String
Dim axe_Y As String
Dim ligne As String
'j'initialise mes 2 valiables (par la suite je ne me concentre que sur x_values)
Set x_values = Range("B11")
Set y_values = Range("R11")
Range("B11").Select
Do While Selection.Value <> 0
ligne = Selection.Row
MsgBox "dans la boucle -- ligne : " & ligne
'j'ecrit dans une variable string, la colonne et la ligne actuelle dans laquelle se trouve la donnee qui m'interresse
axe_X = "B" & ligne
axe_Y = "R" & ligne
'Je fait comme vous m'avez dit pour la concatenation de range, et la est le probleme: si jecrit comme vous me lavez indiquer, ca me selectionne la table entre ces 2 cellules...
Set x_values = Range(x_values, Range(axe_X))
x_values.Select
MsgBox " show x values "
Selection.End(xlDown).Select
Loop
Voila mon probleme je sais pas si ca peux vous interresser mais je fais ca pour apres actualiser un graph avec les valeurs contenu dans ce Range
Si vous avez des idee, elle sont toujours les bienvenues
c'est bon jai trouver, alors je re explique (en esperant que ca soit comprehensible):
Je me positionne en B11 avec :
Range("B11").Select
ce qui correspond a la cellule contenant la date 03.03.08
Je boucle jusqu'a l'obtention d'une cellule vide:
Do While Selection.Value <> 0
Dans 'ligne' je met la ligne en cours soit 11 pour la 1ere boucle
ligne = Selection.Row
J'ecrit dans 'axe_X' qui est un string la position de la cellule dans laquelle je me trouve en ce moment
axe_X = "B" & ligne 'ca donne B11 pour le 1er tour de boucle
Je concatene lancienne valeur de 'x_values' avec la cellule dans laquelle je me trouve (dans la 1ere boucle cette ligne n'a aucun effet puisqu'elle concatenne 2 fois B11 )
Set x_values = Range(x_values, Range(axe_X))
Je cherche la prochaine cellule non vide de la collone B (ce qui ve renvoie a la date 12.03.08)
Selection.End(xlDown).Select
Fin de boucle
Loop
bon je reviens a mon probleme:
Set x_values = Range(x_values, Range(axe_X))
lorsque je suis a mon 2ieme tour de boucle,
j'obtiens dans ma variable 'ligne' = 15
dans mon 'axe_X' = B15
et dans 'x_values' j'obtient ---> Range("B11","B15")
alors que je voudrais avoir ---> Range ("B11,B15")
Bon jespere que c'est comprehensible et que je ne me suis pas emmeller les pinceaux :)
unglued
Messages postés24Date d'inscriptionmercredi 9 janvier 2008StatutMembreDernière intervention28 mars 2008 25 mars 2008 à 18:11
Nan, par ce que mon tableau va etre amener a grandir du coup je test avec un end(xldown) la derniere ligne (comme jai ecrit dans le message ou jai essayer d'expliquer ce que je voulais faire :) )
mais bon la n'est pas la question
ma boucle fonctionne tres bien comme elle est, et je ne souhaite pas ecrire dans les cellule, je souhaite simplement recuperer leur nom.
ca serais un truc qui ressemble a ca : range("B11,B15,B19") et qui lorsque je rajouterais des donnees deviendrais range("B11,B15,B19,B23")
comme je lai precedement dit, c'est pour pouvoir construire un graph par la suite
et j'aurais simplement a donne ce range pour que le tableau sache ou trouver les donnees...
pour tout vous dire yaurais un moyen plus simple, ca serais de concatener le nom dans la variable de type string 'axe_X' mais jai peur que j'ateigne un jour la limite de memoire de la variable string...
Bon merci de l'aide de cette journee et a demain avec beaucoup de motivation!!!
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 25 mars 2008 à 19:40
come on !
il y a des moyens de gerer un tableau variable sur excel ou autre d'ailleur.
Dim MaLigne As Long, DernierLigne As Long
On Local Error Resume Next 'si pas de valeur trouvée a la ligne suivante il y aura une erreur donc on anticipe
DernierLigne = Range("B:B").Find("*", [B1], , , xlByRows, xlPrevious).Row 'renvois le numeros de la ligne qui contient la 'derniere valeur sur la colonne specifiée. Fonctionne meme si il y a des cellules vide dans l'intervale
For MaLigne = 11 To DernierLigne Step 4
range("B" & MaLigne).Value = 12
Next