*SOS* Comment selectionner 1 cases sur 2 ur un totam de 20 cases!*SOS*

X

xaviier

Guest
salut tt le monde
Je desespere!

SVP pouvez vous me dire comment fait ton sous excel en vba pour selectionner une case sur 2 afin de les mettre dans des series de données puis de les incrementer par la suite

si vous ne pouvez pas repondre a tt ma question !

QQ1 pourrais t' il me dire comment faire pour juste selectioner une case sur 2 ????
merci davance!
@+++
xavier
 
P

Pascal76

Guest
Salut Xavier,

Excuses mais j'ai pas eu le temps de jeter un coup d'oeil sur ton fichier (un peu speed en ce moment au boulot)

Je remets ton fil précédent cela permettra à tout le monde de pouvoir récupérer ton fichier

Bon courage

Pascal


Lien supprimé
 
W

wally

Guest
Bonjour xaviier et le forum,

Essaye la macro ci-dessous, qui sélectionne pour chaque ligne de ton tableau les cellules situées dans les colonnes A, C, E, etc. :

Sub Selection_Cellules()

Dim oRge As Range
Dim sRge As String

For Each oRge In Worksheets("Calculs").Range("A5:T51")
'Seulement les colonnes "impaires" (A, C, E, etc.)
If oRge.Column Mod 2 <> 0 Then
If sRge = "" Then
sRge = oRge.Address(0, 0)
Else
sRge = sRge & "," & oRge.Address(0, 0)
End If
If oRge.Column = 19 Then
Range(sRge).Select
MsgBox "Ligne traitée : " & oRge.Row
sRge = ""
End If
End If
Next oRge

End Sub


Slts

wally
 
W

wally

Guest
Re xaviier et le forum,

Voici une variante pour obtenir les valeurs des cellules sélectionnées, sous forme de série :

Sub Selection_Cellules()

Dim oRge As Range
Dim sRge As String

For Each oRge In Worksheets("Calculs").Range("A5:T51")
'Seulement les colonnes "impaires" (A, C, E, etc.)
If oRge.Column Mod 2 <> 0 Then
If sRge = "" Then
sRge = oRge.Value
Else
sRge = sRge & "," & oRge.Value
End If
If oRge.Column = 19 Then
MsgBox "Ligne traitée : " & oRge.Row & " -> Valeurs sélectionnées : " & sRge
sRge = ""
End If
End If
Next oRge

End Sub


Slts

wally
 
W

wally

Guest
Bonjour xaviier et le forum,

Voici les explications demandées :

Dim oRge As Range
> oRge est un objet de type "Range" auquel on assignera successivement chaque cellule de la plage A5:T51

Dim sRge As String
> sRge est une variable de type "String" qui contiendra, pour chaque ligne de la plage A5:T51, les valeurs des cellules sélectionnées,
> séparées par une virgule

For Each oRge In Worksheets("Calculs").Range("A5:T51")
> On parcourt la plage A5:T51, dans l'ordre suivant : A5, B5, C5, ..., T5, A6, B6, C6, ..., T6, etc. jusqu'à T51
> Pour chaque itération dans la boucle, on assigne à l'objet oRge la cellule active. Il faut bien comprendre qu'il s'agit ici
> de la cellule en tant qu'objet (donc y compris ses propriétés et méthodes).

If oRge.Column Mod 2 <> 0 Then
> Si la cellule active se trouve dans une colonne impaire, alors

>> L'opérateur Mod permet de diviser deux nombres en ne renvoyant que le reste. Dans notre cas, on divise le numéro de colonne
>> de la cellule active par 2. Si le reste de cette division est différent de 0, alors il s'agit d'une colonne impaire :
>> 1 Mod 2 = 0 reste 1
>> 2 Mod 2 = 1 reste 0
>> 3 Mod 2 = 1 reste 1
>> 4 Mod 2 = 2 reste 0

If sRge = "" Then
> Si sRge est vide (=> on se trouve en colonne 1), alors

sRge = oRge.Value
> sRge prend la valeur de la cellule active

Else
> sRge n'est pas vide (=> on se trouve en colonne 3 ou 5 ou 7 ou ... ou 19), donc

sRge = sRge & "," & oRge.Value
> On ajoute, à la suite de sRge, une virgule, puis la valeur de la cellule active

End If
> Fin du test (If sRge = "")

>> Si par exemple une ligne contient uniquement des "1", sRge prendra donc successivement les valeurs suivantes :
>> 1
>> 1,1
>> 1,1,1
>> 1,1,1,1
>> etc. jusqu'à 1,1,1,1,1,1,1,1,1,1

If oRge.Column = 19 Then
> Si la cellule active se trouve en colonne 19 (la dernière qui nous intéresse), alors

MsgBox "Ligne traitée : " & oRge.Row & " -> Valeurs sélectionnées : " & sRge
> On affiche un message d'information, comprenant le numéro de la ligne traitée et le contenu de sRge

sRge = ""
> On remet sRge à blanc (on vide la variable)

End If
> Fin du test (If oRge.Column = 19)

End If
> Fin du test (If oRge.Column Mod 2 <> 0)

Next oRge
> On passe à la cellule suivante


Slts

wally
 
X

xaviier

Guest
merci beaucoup wally!
Je pense que ca va pouvoir m' aider a avancer! parce que la ca faisait un moment que j' était en panique!^^
Amicalement
xav..é
ps: par hasard, tu ne sais pas comment faire quand on a une erreur d'execution 1004 a cause d'un range(sRge).select!

@+++
 
W

wally

Guest
Re xaviier et le forum,

C'est difficile de répondre sans voir le code en entier... En général, cette erreur se produit lorsque la cellule (ou la plage) qu'on veut sélectionner n'existe pas...

Tu peux déjà commencer par vérifier ce que contient la variable sRge au moment du "Range(sRge).Select".

Sinon, essaye d'ajouter le nom de la feuille dans laquelle tu veux sélectionner ton range : Worksheets("Feuil1").Range(sRge).Select


Slts

wally
 
L

le CH'TI160

Guest
Bonjour le Forum,

SALUT "WAlly et Xaviier"

Cette intrusion dans ce post , pour remercier tous particulièrement
WALLY qui fait preuve de beaucoup de patience et de compréhension avec les gens comme moi qui ont besoin d'un peu plus pour comprendre
je parlais il y a quelques jours, Sur ce Forum de "TUTORAT"

C'est un peu ce que tu fais et je t'en remercie

Grâce à des gens comme toi , J'avance un peu plus chaque jours

C'est bon
disk.gif
 
X

xaviier

Guest
For Each oRge In Worksheets("Calculs").Range("A5:T51")
Resalut wally! Désolé de ne pâs te lacher mais ton aide m'aide beaucoup!^^

voila ma partie de code
qq explications y sont fournis pour te monter ce que j' aimerais réaliser :-/

mon pb vient de mon range (sRge).select et de ma création de nouvelles séries!
je narrive pas a donner les valeurs souhaitées à mes séries. Pourtant il y a un graph qui apparait mais ce b' est pas celui voulu...
voila si tu pouV (encore) me donner un coup de main...^^
merci d'avance



If oRge.Column Mod 2 <> 0 Then
If sRge = "" Then
sRge = oRge.Address(0, 0)
Else
sRge = sRge & "," & oRge.Address(0, 0)
End If
If oRge.Column = 19 Then
Range(sRge).Select '<===Erreur 1004 mais je ne comprends pas la valeur sRge comprends des valeurs? si oui lesquelles? les horaires?

Set newser = .SeriesCollection.newseries '===>CREATION DUNE NOUVELLE SERIE
newser.Values = Range(sRge) '<=== j' aimerais creer un nouvelle série contenant chaques valeurs de chaques lignes(A5,C5...)

'MsgBox "Ligne traitée : " & oRge.Row
sRge = ""
End If
End If


@++++
 
W

wally

Guest
Re xavieer,

L'erreur 1004 doit provenir du fait qu'au moment où l'instruction est exécutée, un graphique est probablement actif sur l'une ou l'autre des feuilles de ton classeur. Pour remédier à cela, essaye avec "Worksheets("Calculs").Range(sRge).Select".

Les graphiques sous Excel ne sont pas vraiment ma tasse de thé, mais il me semble que pour réaliser ce que tu souhaites, il faudrait plutôt utiliser le code qui sélectionne les valeurs des cellules (voir mon message d'avant-hier à 10:52).

Ensuite je ferais qqch du genre :

If oRge.Column = 19 Then
iSer = iSer + 1
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(iSer).Values = "={" & sRge & "}"
sRge = ""
End If

Mais bon, comme dit, ce ne sont que des idées...

Courage !


Slts

wally
 
X

xaviier

Guest
salut!

en fait g pas bien saisie à quoi sert ta variable "iser"

En fait mon pb est que mes valeurs du graph naffiche que des 1 pis evidement l' erreur 1004!

@ + + + + +
XaViEr
 

Pièces jointes

  • Monpopessai.zip
    41.6 KB · Affichages: 35
  • Monpopessai.zip
    41.6 KB · Affichages: 32
  • Monpopessai.zip
    41.6 KB · Affichages: 33
W

wally

Guest
Bonsoir xaviier et le forum,

Après avoir modifié légèrement la procédure Selection_Cellules(), le graphique a maintenant un autre aspect (voir fichier joint).

Cela ne correspond certainement pas au résultat souhaité, mais peut-être y trouveras-tu quelques pistes qui te permettront d'avancer dans le projet.


Slts

wally
 

Pièces jointes

  • Monpopessai.zip
    42.8 KB · Affichages: 35
  • Monpopessai.zip
    42.8 KB · Affichages: 34
  • Monpopessai.zip
    42.8 KB · Affichages: 31

Discussions similaires

Statistiques des forums

Discussions
314 167
Messages
2 106 632
Membres
109 645
dernier inscrit
benjedida