marche puis marche pas!

fifi

XLDnaute Occasionnel
bonjour tous,

juste pour savoir ...
j'ai une macro qui fonctionnait correctement et d'un coup elle fait une erreur à une ligne de code qui n'avait pas de pb...

je cherche l'erreur et ne trouve rien de spéciale.

la macro a pour but de copier une plage de cellule et de la coller à un autre amplacement. ceci dans une boucle FOR NEXT.
Y = la hauteur de la sélection
Couleur = la colonne de la sélection
NbImage = le nombre de boucle à faire

l'erreur se situe au niveau de la ligne :
Range(Cells(nbImage + 6 + Y, 1 + Couleur), Cells(nbImage + 6 + Y + 256, 1 + Couleur)).Copy


bref je copie le code ici :

Sub FCT_mise_en_profil()

Sheets('profils').Select

Dim I, Y, nbImage, Couleur, IntervalleLigne, MaxX, MinX As Variant

nbImage = range('I33') 'valeurs de 1 à 250
Y = -259
Couleur = Range('F33') 'valeurs = à 1 , 2 ou 3


For I = 0 To nbImage - 1
Y = Y + 258

Range(Cells(nbImage + 6 + Y, 1 + Couleur), Cells(nbImage + 6 + Y + 256, 1 + Couleur)).Copy

Cells(40, 6 + I).Select
ActiveSheet.Paste

Next I

End Sub
:pinch:



si quelq'un voit l'erreur ..merci
 

fifi

XLDnaute Occasionnel
bon cette fois ci il n'y avaot pas d'espace mais comme winzip compresse moins que winrar..le fichier faisait 60ko....la galére [file name=shoot.zip size=42908]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/shoot.zip[/file]
 

Pièces jointes

  • shoot.zip
    41.9 KB · Affichages: 14

Hellboy

XLDnaute Accro
re

Je vois déjà deux petites chose:
1- Pas la bonne référence pour le nom du Graphique;
ActiveSheet.ChartObjects('Chart 3').Activate et non pas:
ActiveSheet.ChartObjects('Graphique 2').Activate

2- Tu n'as pas de série en X, pas sur que c'est un prob encore

je continue !
 

Hellboy

XLDnaute Accro
re

Premièrement, j'ai du mettre 0 dans la cellule G35, parce que je ne pointait sur aucune données, donc pas de séries de données dans le graph.

ensuite cette partie du code

Code:
For I = 1 To nbImage
    ActiveChart.SeriesCollection(I).Select

nbImage ne semble pas en armonie avec le nombre de série de données représenté par I

a vérifier de ta part
 

Hellboy

XLDnaute Accro
re

autre chose, dans la boucle:
Code:
For I = 0 To nbImage - 1
Y = Y + 258
Range(Cells(nbImage + 6 + Y, 1 + Couleur), Cells(nbImage + 6 + Y + 256, 1 + Couleur)).Copy

Cells(40, 6 + I).Select
ActiveSheet.Paste

Next I

tu as une erreur de clacul pour la longueur de la plage. Lors du passage de I donc 0, la ligne de fin pour la copie est a 296 et qui est du texte ?

a vérifier de ta part aussi.

je suis curieux de savoir comment cela peut arriver que si rien n'as changer tout est de travers ??? ;)


Bon courage !

Message édité par: Hellboy, à: 29/06/2005 16:07
 

fifi

XLDnaute Occasionnel
re , merci pour ces précisions ...

je vais répondre à tes remarques puis apporter plus d'info sur l'erreur.


1/ erreur de plage de copie effectivement la selection de la plage de copie dépasse le plage des valeurs mais ce n'est pas vraiment grave car ce qui m'interesse c'est de faire un copié collé sans me préocuper des cellules 'vide/text' de la fin de la plage.

2/ En G35 je veux afficher une plage de cellules horizontales se trouvant dasn la matrice devant être créée par la macro..d'ou le vide.
donc tu as bien fait de mettre 0 pour pointer sur au moins l'eindice des colonnes.

3/ effectivement j'avais corrigé le pb plus bas mais pas pour la premiere ligne :
For I = 0 To nbImage - 1


4/le graphique; il y avait 2 graphiques..j'ai supprimé le plus lourd pour gagner en poids lors de l'envoie ;)

j'ai fait quelques tests sur la macro

j'ai mis en commentaire toutes la macro ....sauf une fonction de test

Sub FCT_mise_en_profil()
'commantaires
Cells(1,1).select
'commentaires
End sub

et ca plante sur la méthode de l'objet!!!
si je crée une autre macro dans un classeur neuf ca plante pas!
 

fifi

XLDnaute Occasionnel
bon j'ai trouvé ... :(

le pb venais pas de la formule...mais de la position de ces 2 lignes :

ActiveSheet.ChartObjects('Graphique 2').Activate
ActiveChart.ChartArea.Select

placées avec une boucle FOR .


donc ce code ne marche pas :
-----------------------------------------------------------------------
Dim I, Y, MaxX, NbImage, Couleur, MinX As Variant
NbImage = 35
Y = -259
MaxX = Range('I35')
MinX = Range('I36')
Couleur = Range('F33')

'''''''''trace et formatage graph

ActiveSheet.ChartObjects('Graphique 2').Activate
ActiveChart.ChartArea.Select

For I = 1 To NbImage

ActiveChart.SeriesCollection(I).Select
With Selection.Border
.Weight = xlThin
.LineStyle = xlAutomatic
End With
With Selection
.MarkerBackgroundColorIndex = xlAutomatic
.MarkerForegroundColorIndex = xlAutomatic
.MarkerStyle = xlNone
.Smooth = False
.MarkerSize = 2
.Shadow = False
End With
Next I

For I = 0 To 35 'nbImage - 1
Y = Y + 258
Cells(1, 1).Select

Range(Cells(NbImage + 6 + Y, 1 + Couleur), Cells(NbImage + 6 + Y + 256, 1 + Couleur)).Copy

Cells(40, 6 + I).Select
ActiveSheet.Paste
end sub
----------------------------------------------------------



celui là fonctionne
--------------------------------------------------------
Dim I, Y, MaxX, NbImage, Couleur, MinX As Variant
NbImage = 35
Y = -259
MaxX = Range('I35')
MinX = Range('I36')
Couleur = Range('F33')

'''''''''trace et formatage graph

ActiveSheet.ChartObjects('Graphique 2').Activate
ActiveChart.ChartArea.Select

For I = 1 To NbImage

ActiveChart.SeriesCollection(I).Select
With Selection.Border
.Weight = xlThin
.LineStyle = xlAutomatic
End With
With Selection
.MarkerBackgroundColorIndex = xlAutomatic
.MarkerForegroundColorIndex = xlAutomatic
.MarkerStyle = xlNone
.Smooth = False
.MarkerSize = 2
.Shadow = False
End With
Next I
'''''''''''''''''''''''''''''''''''''''
For I = 0 To 35 'nbImage - 1
Y = Y + 258
Cells(1, 1).Select

Range(Cells(NbImage + 6 + Y, 1 + Couleur), Cells(NbImage + 6 + Y + 256, 1 + Couleur)).Copy

Cells(40, 6 + I).Select
ActiveSheet.Paste
end sub
------------------------------------------------------------------------

bizard je vois pas pourquoi ..enfin il n'y a pas de raison
 

fifi

XLDnaute Occasionnel
oups deux fois le copié collé identique dsl
bon j'ai trouvé ...

le pb venais pas de la formule...mais de la position de ces 2 lignes :

ActiveSheet.ChartObjects('Graphique 2').Activate
ActiveChart.ChartArea.Select

placées avec une boucle FOR .


donc ce code ne marche pas :
-----------------------------------------------------------------------
Dim I, Y, MaxX, NbImage, Couleur, MinX As Variant
NbImage = 35
Y = -259
MaxX = Range('I35')
MinX = Range('I36')
Couleur = Range('F33')

'''''''''trace et formatage graph

ActiveSheet.ChartObjects('Graphique 2').Activate
ActiveChart.ChartArea.Select

For I = 1 To NbImage

ActiveChart.SeriesCollection(I).Select
With Selection.Border
.Weight = xlThin
.LineStyle = xlAutomatic
End With
With Selection
.MarkerBackgroundColorIndex = xlAutomatic
.MarkerForegroundColorIndex = xlAutomatic
.MarkerStyle = xlNone
.Smooth = False
.MarkerSize = 2
.Shadow = False
End With
Next I

For I = 0 To 35 'nbImage - 1
Y = Y + 258
Cells(1, 1).Select

Range(Cells(NbImage + 6 + Y, 1 + Couleur), Cells(NbImage + 6 + Y + 256, 1 + Couleur)).Copy

Cells(40, 6 + I).Select
ActiveSheet.Paste
end sub
----------------------------------------------------------



celui là fonctionne
--------------------------------------------------------
Dim I, Y, MaxX, NbImage, Couleur, MinX As Variant
NbImage = 35
Y = -259
MaxX = Range('I35')
MinX = Range('I36')
Couleur = Range('F33')

'''''''''trace et formatage graph

For I = 1 To NbImage
ActiveSheet.ChartObjects('Graphique 2').Activate
ActiveChart.ChartArea.Select
ActiveChart.SeriesCollection(I).Select
With Selection.Border
.Weight = xlThin
.LineStyle = xlAutomatic
End With
With Selection
.MarkerBackgroundColorIndex = xlAutomatic
.MarkerForegroundColorIndex = xlAutomatic
.MarkerStyle = xlNone
.Smooth = False
.MarkerSize = 2
.Shadow = False
End With
Next I
'''''''''''''''''''''''''''''''''''''''
For I = 0 To 35 'nbImage - 1
Y = Y + 258
Cells(1, 1).Select

Range(Cells(NbImage + 6 + Y, 1 + Couleur), Cells(NbImage + 6 + Y + 256, 1 + Couleur)).Copy

Cells(40, 6 + I).Select
ActiveSheet.Paste
end sub
------------------------------------------------------------------------

bizard je vois pas pourquoi ..enfin il n'y a pas de raison
 

Statistiques des forums

Discussions
312 294
Messages
2 086 867
Membres
103 402
dernier inscrit
regishar