|
Publicité | ||||||||||||||||||||||
|
|
#1 (permalink) |
|
Invité régulier
![]() Nom : Philippe
Date d'inscription: janvier 2010
Messages: 13
|
Bonjour,
je sollicite votre aide pour une ligne de code, cela doit être simple, mais à force j'ai des peaux de sauss dans les yeux...! je veux sélectionner un tableau pour faire un graphique. je ne connais le nombre de ligne et le nombre de colonne. Je pense avoir trouvé le code pour trouver ces 2 nombres, reste la sélection des cellules pour le graphique...et là je plante... voici mon bout de code: Code :
Dim ligne As Long Dim Feuil1 As Worksheet Dim i As Integer Dim compt As Integer Dim ncol As Integer 'détection nombre de colonnes compt = 0 Cells(13, 6).Select For i = 7 To 11 If Cells(13, i).Value <> "" Then compt = compt + 1 End If Next i ncol = compt + 6 'detection nombre lignes ligne = Worksheets("Feuil1").Range("A35536").End(xlUp).Row MsgBox Worksheets("Feuil1").Cells(ligne, 1) Range(Cells(13, 6), Cells(ligne, ncol)).Select Charts.Add ActiveChart.ChartType = xlXYScatterSmoothNoMarkers ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range(Cells(13, 6), Cells(ligne, ncol)).Select, PlotBy _ :=xlColumns Merci Tremens Dernière modification par Philippe JOCHMANS ; 07/02/2010 à 15h36. Motif: Ajout des balises codes (sélection du code + bouton # dans la fenêtre de rédaction des messages) |
|
|
|
|
|
#2 (permalink) |
|
Membre Expert
![]() |
Salut
En regle general il faut eviter l'utilisation des "select", ils sont trés souvent superflu, une cellule n'a pas besoin d'etre selectionnée pour qu'on modifie sa valeur. Je pense que l'erreur dans ton code se situe ici Code :
ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range(Cells(13, 6), Cells(ligne, ncol)).Select, PlotBy _
:=xlColumns
Une autre remarque tu testes tes colonne une a une est compte le nombre de cellule non vide dans une boucle, mais imagine qu'une cellule soit vide, tu va compter seulement les cellule non vide et faire ta sélection, donc tu vas décaler ta sélection d'une colonne et perdre les données contenu dans la dernière colonne de ton tableau. On peut donc supposer que les cellules ne sont jamais vide? si c'est le cas ton code fonctionne mais du coup pourquoi ne pas utiliser End(xlleft) comme tu as fait pour les lignes? A++ Qwaz
__________________
MagicQwaz := Harry Potter la baguette en moins ![]() Le méchant Qwaz sur Msn ... inutile de me rajouter sur msn pour que je fasse votre boulot (les concernés sont au courant, les autres relax Le monde dans lequel on vit HammerFest Score PowerBall Gyroscope Green : 11847 |
|
|
|
|
|
#3 (permalink) | |
|
Invité régulier
![]() Nom : Philippe
Date d'inscription: janvier 2010
Messages: 13
|
Citation:
J'ai mis cette boucle pour connaitre le nombre de voies d'acquisition. ce nombre varie de 1 à 5 et l'appli qui me permet de récupérer les valeurs pour les exporter en fichiers excel, enregistre les voies de façon continu (colonne) meme si par exemple j'ai la voie 0 et la voie 4 connectées. je viens de tester la macro sans select, car plus haut comme tu l'a écris j'avais déja sélectionné la zone pour le graphique...mais cela ne marche pas! enfin pas comme je le veux. Il me crée un graphique dans une feuille graphique or je le veux dans la feuille de calcul. Quel autre moyen ai-je pour sélectionner des series? Tremens |
|
|
|
|
|
|
#4 (permalink) |
|
Membre Expert
![]() |
Salut et bienvenu au fait
Je n'ai pas Excel sous la main actuellement, le plus simple pour avoir le résulta que tu recherches c'est d'enregistrer une macro, tu lances l'enregistrement, tu sélectionnes ta plage de données et crées ton graphique. Ensuite tu regardes le code généré par Excel pour créer le graphique associé aux données. A++ Qwaz
__________________
MagicQwaz := Harry Potter la baguette en moins ![]() Le méchant Qwaz sur Msn ... inutile de me rajouter sur msn pour que je fasse votre boulot (les concernés sont au courant, les autres relax Le monde dans lequel on vit HammerFest Score PowerBall Gyroscope Green : 11847 |
|
|
|
|
|
#5 (permalink) | |
|
Invité régulier
![]() Nom : Philippe
Date d'inscription: janvier 2010
Messages: 13
|
Citation:
J'ai commencé par la, ca marche pour un nombre de ligne donné, en revanche ça se corse quand je veux mettre une variable à la place du nombre de ligne. je continu de cherche, mais j'en perds mon latin... Sera-t-il possible que je vous donne ma macro, une fois fini, pour avoir votre avis et me donner les points à améliorer? Tremens |
|
|
|
|
|
|
#6 (permalink) |
|
Membre Expert
![]() |
Salut
Alors voila un bout de code Code :
Sub test() Dim ligne As Long 'Dim Feuil1 As Worksheet 'Surtout pas! Feuil1 est déjà déclaré puisqu'il existe dans ton classeur Excel 'Dim i As Integer 'Dim compt As Integer Dim ncol As Integer Dim Sh As Worksheet 'détection nombre de colonnes 'compt = 0 'Cells(13, 6).Select 'For i = 7 To 11 'If Cells(13, i).Value <> "" Then 'compt = compt + 1 'End If 'Next i 'ncol = compt + 6 Set Sh = Worksheets("Feuil1") 'permet de faire reference a la feuille sans avoir a tout taper 'detection nombre lignes & colonnes ncol = Sh.Cells(13, Columns.Count).End(xlToLeft).Column ligne = Sh.Cells(Rows.Count, "F").End(xlUp).Row 'je suppose que tu testes en colonne F (6) 'MsgBox Sh.Cells(ligne, 1) 'Range(Cells(13, 6), Cells(ligne, ncol)).Select With Charts.Add .ChartType = xlXYScatterSmoothNoMarkers 'penser à faire reference à la feuille à l'interieur de Range() .SetSourceData Source:=Sh.Range("F13", Sh.Cells(ligne, ncol)), PlotBy:=xlColumns .Location Where:=xlLocationAsObject, Name:="Feuil1" End With End Sub Attention, Feuil1 n'a pas besoin d'être déclarée, puisque celle ci existe dans ton classeur. Chart.Location te permet de placer ton graphic ou tu le souhaites. Quand tu recherches la dernière ligne non vide, tu te placé sur la colonne A, tes données ne commence t'elle pas en colonne F? j'ai pris la liberté de me placer en F, a toi de modifier au besoin. J'ai pris en compte la dernière cellule non vide de la ligne 13 pour avoir le nombre de colonnes utilisées. Il est preferable de faire reference a la feuille dans le corp de la "funtion" Range() Code :
Feuil.Range(cells(r,c),cells(r2,c2)) Feuil.Range(Feuil.cells(r,c),Feuil.cells(r2,c2)) 'Dans ce cas encore mieux Feuil.Range("F13",,Feuil.cells(r2,c2)) Qwaz
__________________
MagicQwaz := Harry Potter la baguette en moins ![]() Le méchant Qwaz sur Msn ... inutile de me rajouter sur msn pour que je fasse votre boulot (les concernés sont au courant, les autres relax Le monde dans lequel on vit HammerFest Score PowerBall Gyroscope Green : 11847 |
|
|
|
|
|
#7 (permalink) |
|
Invité régulier
![]() Nom : Philippe
Date d'inscription: janvier 2010
Messages: 13
|
J'ai bidouillez tout l'après midi, résultat nada (normal) si ce n'ai un mal de crane...
bravo pour le code un peu travaillé , il marche à merveille...je mesure le travail qui me reste à faire pour en arriver la.je vais m'en servir pour apprendre... le seul hic avec la recherche de la dernière colonne, c'est qu'en AW, j'ai une liste ...je la déplacerai... Je réitère ma proposition pour vous faire par de mon code final pour avoir votre avis et me donner les points à améliorer? Bonne nuit Merci encore Tremens |
|
|
|
|
|
#8 (permalink) |
|
Membre Expert
![]() |
Salut
Bien sur nous serons toujours disponible pour corrigé ou améliorer un code, c'est une des raisons de vivre du forum, pour ma part (et je doute etre le seul) je préfère corriger un code qu'une personne a eu du mal a faire, qu'avoir un post qui me demande du code tout cuit. Pour ton histoire de colonne modifie cette ligne Code :
ncol = Sh.Cells(13, "AV").End(xlToLeft).Column Si ton problème est résolu, n'oublie pas le tag A++ Qwaz
__________________
MagicQwaz := Harry Potter la baguette en moins ![]() Le méchant Qwaz sur Msn ... inutile de me rajouter sur msn pour que je fasse votre boulot (les concernés sont au courant, les autres relax Le monde dans lequel on vit HammerFest Score PowerBall Gyroscope Green : 11847 |
|
|
|
|
|
![]() |
||
[XL-2003] sélection séries pour graphique
|
||
| Outils de la discussion | |
|
|