Concatenantion de "range"

Résolu
unglued Messages postés 24 Date d'inscription mercredi 9 janvier 2008 Statut Membre Dernière intervention 28 mars 2008 - 20 mars 2008 à 18:26
unglued Messages postés 24 Date d'inscription mercredi 9 janvier 2008 Statut Membre Dernière intervention 28 mars 2008 - 26 mars 2008 à 11:15
We all trust in tartiflette

24 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
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"))

Vala

A+
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
21 mars 2008 à 09:53
Set x_values = Range("A1" , "B1")

ou encore

Set x_values = Range(Range("A1") ,Range("B1"))
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
26 mars 2008 à 11:11
largement assez, n'aies crainte. (des millions de caractères...)
3
unglued Messages postés 24 Date d'inscription mercredi 9 janvier 2008 Statut Membre Dernière intervention 28 mars 2008
20 mars 2008 à 18:27
Ops desole jai envoyer du vide :D





Bonjour,

Je souhaite concatener 2 range dans une seule
pour commencer je voudrais faire un truc simple du genre:

Dim x_values As Range
Set x_values = Range("A1") + Range("B1")

mais le hic c'est ke je nai pas le concateneur adekouat (dsl jai pas la bonne orthographe pour ce mot).

si quelqu'un a une idee sur la facon de gerer mon petit probleme je suis preneur!!!

Merci,

Si jamais ya un moyen, il y a des chance que je vous redemande de m'aider par la suite, mon probleme s'annonce corser :D
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Lunikmarty Messages postés 55 Date d'inscription lundi 3 mars 2008 Statut Membre Dernière intervention 17 avril 2008
20 mars 2008 à 18:59
Range("A:B")
0
cs_bouf Messages postés 114 Date d'inscription lundi 6 septembre 2004 Statut Membre Dernière intervention 20 mars 2008
20 mars 2008 à 19:02
Salut,
j'ai plus de mal à lire ton français qu'à comprendre ton VB. Prend ton temps pour ecrire, on est pas à la seconde !

resultat= Range("A1") & Range("B1")
a+

Cliff le bouffeur
0
unglued Messages postés 24 Date d'inscription mercredi 9 janvier 2008 Statut Membre Dernière intervention 28 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...
0
unglued Messages postés 24 Date d'inscription mercredi 9 janvier 2008 Statut Membre Dernière intervention 28 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
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 mars 2008 à 14:12
rien compris...
0
unglued Messages postés 24 Date d'inscription mercredi 9 janvier 2008 Statut Membre Dernière intervention 28 mars 2008
25 mars 2008 à 14:32
est il possible d'ajouter mon fichier excel a un message, ca sera plus simple a expliquer comme ca ???

par ce que je ne me sent pas expliquer la facon dont est construit mon tableau...
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 mars 2008 à 14:42
non, pas possible
0
unglued Messages postés 24 Date d'inscription mercredi 9 janvier 2008 Statut Membre Dernière intervention 28 mars 2008
25 mars 2008 à 15:01
<colgroup>
<col style=\"WIDTH: 72pt; mso-width-source: userset; mso-width-alt: 3510\" width=\"96\" />
<col style=\"WIDTH: 43pt; mso-width-source: userset; mso-width-alt: 2084\" width=\"57\" />
<col style=\"WIDTH: 66pt; mso-width-source: userset; mso-width-alt: 3218\" width=\"88\" />
<col style=\"WIDTH: 68pt; mso-width-source: userset; mso-width-alt: 3291\" width=\"90\" />
<col style=\"WIDTH: 47pt; mso-width-source: userset; mso-width-alt: 2304\" width=\"63\" />
<col style=\"WIDTH: 62pt; mso-width-source: userset; mso-width-alt: 2998\" width=\"82\" />
<col style=\"WIDTH: 68pt; mso-width-source: userset; mso-width-alt: 3291\" width=\"90\" />
<col style=\"WIDTH: 65pt; mso-width-source: userset; mso-width-alt: 3145\" width=\"86\" />
</colgroup>

----

Name,
Date,
Voc - Average,
Max - Average,
Average - Min,
Isc - Average,
Max - Average,
Average - Min,

----

C1,
06.03.08,
1.308,
0.033,
0.041,
8.478,
0.294,
0.188,

----

C1_annealed,
 ,
1.322,
0.005,
0.019,
9.306,
0.287,
0.305,

----

C2,
 ,
1.321,
0.015,
0.083,
8.956,
0.144,
0.136,

----

C2_annealed,
 ,
1.318,
0.003,
0.008,
9.707,
0.309,
0.342,

----

C1,
12.03.08,
1.254,
0.033,
0.051,
10.645,
0.128,
0.144,

----

C1_annealed,
 ,
1.271,
0.005,
0.003,
10.683,
0.086,
0.086,

----

C2,
 ,
1.016,
0.263,
0.840,
10.705,
0.117,
0.135,

----

C2_annealed,
 ,
1.274,
0.003,
0.005,
10.784,
0.073,
0.138


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 :)
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 mars 2008 à 15:17
tu veux l'intervalle "B11:B15" ?
0
unglued Messages postés 24 Date d'inscription mercredi 9 janvier 2008 Statut Membre Dernière intervention 28 mars 2008
25 mars 2008 à 16:55
non je veux la cellule B11 et la cellule B15
ce qui devrais normalement s'ecrire Range("B11,B15")
mais j'y arrive po :(
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 mars 2008 à 17:09
...
je tapes :
range("A1,E5").Value = 31
dans ma fenetre d'execution VBA, ca impactes A1 et E5

je tapes:
range("A1:E5").Value = 12
ca impacte A1, A2, A3, A4, A5, B1, B2, B3, ..., E5
0
unglued Messages postés 24 Date d'inscription mercredi 9 janvier 2008 Statut Membre Dernière intervention 28 mars 2008
25 mars 2008 à 17:46
oui et bien justement je veux ta 1ere possibilite,
juste avoir A1 et E5 (par exemple)

Dans mon cas je veux un range avec les cellule B11 + B15 + B19 + B23 etc...
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
25 mars 2008 à 17:53
si tu beaucoup cellules  une boucle for next serait peut etre le plus simple

dim MaLigne as Long
For MaLigne = 11 to 100 Step 4
    range("B" & MaLigne).Value = 12
Next
0
unglued Messages postés 24 Date d'inscription mercredi 9 janvier 2008 Statut Membre Dernière intervention 28 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!!!
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
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
0
unglued Messages postés 24 Date d'inscription mercredi 9 janvier 2008 Statut Membre Dernière intervention 28 mars 2008
26 mars 2008 à 09:48
Bon ok je vais changer mon plan de depart et je vais me la faire comme ca :)
Merci
0
Rejoignez-nous