Bonjour
j'aimerais savoir comment on fait pour pouvoir sélectionner une ligne sur 3 dans un tableau excel.
Merci d'avance
-----
Bonjour
j'aimerais savoir comment on fait pour pouvoir sélectionner une ligne sur 3 dans un tableau excel.
Merci d'avance
Bonjour,
A la main tu sélectionnes avec la souris en maintenant Ctrl enfoncée
En VBA tu fais :
Code:Option Explicit Sub essai() Dim PremLi As Long Dim Pas As Integer Dim NbLignes As Long Dim Cpt As Integer Dim chaine As String Dim Plage As Range ' --------------- Pour un tableau qui va de B3 à E24 par exemple PremLi = 3 Pas = 3 NbLignes = 24 For Cpt = PremLi To NbLignes Step Pas chaine = chaine & "B" & Cpt & ":" & "E" & Cpt & "," Next Cpt chaine = Left(chaine, Len(chaine) - 1) Set Plage = Range(chaine) Plage.Select End Sub
Cordialement
J'ai copié et collé ce que tu m'as écrit dans visual basic il me met comme erreur: Erreur d'execution "1004" Erreur du à l'application ou à un objet
ca vient de quoi ?
Mon tableau va de A2 à H3744
Merci d'avance
Bonjour,
J'utilise une chaîne pour créer l'adresse de plage, qui est un ensemble de plages individuelles et il semble qu'il y ait un problème au delà d'une certaine longueur de chaîne alors que la limite théorique en VBA est de 2 milliards de caractères. Je ne comprends pas, je regarde...
Cordialement
Méthode bourrine, mais efficace : tu réserves une colonne (par ex A) pour la sélection.
Dans A1 tu entres 0
Dans A2 tu entres 1
Dans A3 tu entres 2
Tu copie a1:a3 dans A4:A jusqu'où tu veux.
Ensuite selon ton désir tu sélectionnes (par filtre par ex) les lignes dont la cellule en colonne A contient 0 (ou 1 ou 2 selon)
On trouve des chercheurs qui cherchent ; on cherche des chercheurs qui trouvent !
C'était probablement une limitation du nombre de plages non contiguës dans EXCEL. Voilà le nouveau code qui fonctionne. (ne t'étonne pas il faut quelques secondes)
Cordialement
Code:Option Explicit ' --------------- Pour un tableau qui va de A2 à H3744 Sub essai() Dim Cpt As Integer Dim Plage As Range Set Plage = Range("A2:H2") For Cpt = 5 To 3744 Step 3 Set Plage = Union(Plage, Range(Cells(Cpt, 1), Cells(Cpt, 8))) Next Cpt Plage.Select End Sub
Ton système marche mécano !!!
Mais comment on fait pour lui dire de couper et coller ailleurs les lignes sélectionées ??
Derrière Plage.Select, tu ajoutes :
Selection.Copy
Range("L2").PasteSpecial
pour coller à partir de L2 par exemple
EDIT C'est une copie car la coupure est interdite sur une sélection multiple
Dernière modification par mécano41 ; 04/04/2008 à 16h49.
Salut mécano, merci pour ton aide ca marche
en fait j'ai fait une étude en médecine nucléaire sur le tep et dans mon étude j'ai 34 pas composé de 90 résultats chacun.
Dans mon tableau excel j'aimerais lui dire de récupérer par exemple toutes les coupes 30 de chaque frame et de les mettre à coté pour ensuite pouvoir faire une courbe !!!
J'aimerais que toutes les coupes 30 soit a coté et que toutes les coupes 20 ... le soit aussi c'est possible ?
J'ai juste qu'a changé des petits trucs dans ce que tu m'as donné avant ?
J'ai oublié de dire que les coupes s'aditionner donc vont de 1 à 3060 et sont inversés la première est 3060
Je ne comprends pas bien. Tu veux dire que tu as maintenant :
- 34 blocs de 90 lignes soit 3060 lignes
- que tu veux prendre la trentième ligne de chaque bloc de 90 et la copier plus loin
- que tu veux prendre ensuite la vingtième ligne de chaque bloc de 90 et la copier encore plus loin
- mais qu'au lieu de commencer à compter à partir du bébut, il faut compter à partir de la fin (ligne 3060)
C'est bien cela?
Mais si c'est cela, il faudra programmer autrement car même en sélectionnant à l'envers, la copie de la sélection sera dans le même ordre que celle-ci et je suppose que tu veux l'inverse, c'est à dire que la première ligne sélectionnée (la dernière de la feuille) soit en haut dans la copie.
Il faudrait, dans ce cas, copier et coller ligne par ligne, à moins de pouvoir faire une inversion par tri sur l'une des colonnes du tableau (une colonne qui serait déjà en ordre croissant ou décroissant)
En fait ce que j'aimerais c'est faire un programme qui demande à l'utilisateur de choisir la coupe qui veut analyser et que le programme prenne toutes les les 30èmes coupes et les colles dans un endroit pour pouvoir ensuite avec des valeurs de références faire une courbe
Tu sais comment je peux faire ?
Ce que tu appelles une coupe, c'est bien l'une des 90 lignes ?
Si c'est comme ce que l'on a fait au début mais toutes les 20 ou 30 lignes au lieu d'être toutes le 3 lignes, cela ne pose pas de problème ; pour choisir le pas de sélection des lignes on peut ajouter simplement une boîte de dialogue
Mais je voudrais être sûr que c'est ainsi. Ce qui me trouble c'est le message #10 où tu parles d'inversion.
Oui une coupe c'est une ligne.
Pour l'inversion c'est pas grave il suffit juste que j'inverse aussi mais x pour mon graphe et il comprendra.
Maintenant ce que j'aimerais faire c'est un programme ou tu peux lui dire de choisir une coupe et le programme selectionnera toutes les 90 lignes la coupes demandée.
Exemple l'utilisateur rentre la coupe 30 et il obtient un tableau correspondant à toutes les coupes 30 de la série.
C'est à dire 30 120 210 300....
Bonjour,
Dans ce cas, il te suffit de copier ce code et de la coller dans ton application :
Code:Option Explicit ' --------------- Pour un tableau qui commence de A2 à H2 Sub essai() Dim Cpt As Integer Dim Plage As Range Dim Coupe As Variant Const NbBlocs = 34 Const NbCoupeParBloc = 90 Coupe = InputBox("Quelle coupe voulez-vous traiter?", "Choix de la coupe") If Coupe = "" Then Exit Sub Set Plage = Range("A" & Coupe + 1 & ":H" & Coupe + 1) For Cpt = 1 + Coupe To NbBlocs * NbCoupeParBloc Step NbCoupeParBloc Set Plage = Union(Plage, Range(Cells(Cpt, 1), Cells(Cpt, 8))) Next Cpt Plage.Select Selection.Copy Range("L2").PasteSpecial End Sub
Si nécessaire, tu peux modifier les valeurs dans ces deux lignes :
Const NbBlocs = 34
Const NbCoupeParBloc = 90
Cordialement
Ca marche
Par contre je pensais qu'en faisant mon graphe avec des valeurs inversés il me les remettrai dans l'ordre. Mais non !
Comment on fait pour inverser des valeurs ? c'est à dire que la dernière ce trouve en 1er et la 1ère en dernier et vis versa.
Mon tableau commence de 2 à 3060
Cordialment
Normalement, sans rien inverser dans le tableau :
- tu cliques sur l'axe des ordonnées
- tu choisis "Format de l'axe"
- tu choisis "Echelle"
et là tu coches "ordre inverse"et "axe des ordonnées X coupe à la valeur maximale"
Cela te met la courbe à l'envers
Cordialement
Dernière modification par mécano41 ; 08/04/2008 à 17h00.
Oui c'est bon ça fonctionne merci.
Est ce que tu sais si c'est possible de définir une macro ou une colonne aurait toujours les même valeurs.
Avec cette colonne et une des colonnes de la coupe à définir je pensais faire un graphique ça peut s'automatiser ?
Merci d'avance
Cela veut-il dire que tu collerais la copie à côté d'une colonne existante et invariable (contenant les abscisses par exemple) et que l'ensemble constituerait les données du graphe?
Oué c'est ca
ma colonne représenterai le temps cumulée de mon acquisition:
pour mon expérience la : 60 65 70 75 80 85 90 95 100 105 110 115 120 130 140 150 160 170 180 190 200 210 220 230 240 270 300 330 360 390 420 480 540 600 660 720 780 840 1120 1200
Parce que dans mon expérience j'ai fait 34 pas donc 3060 images
Ca représente les abscisses