erreur défini par l'application.

Résolu
cs_nitho Messages postés 130 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 8 décembre 2015 - 19 juil. 2011 à 12:23
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 22 juil. 2011 à 19:20
Bonjour à tous,

dites un bug me turlupine, voici la ligne de l'erreur

myRow = Worksheets(MaFeuille).Range(Cells(i + 2, 1), Cells(i + 2, 13)).Value

erreur défini par l'application...

avec myRow as variant




nitho l'amateur

6 réponses

cs_nitho Messages postés 130 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 8 décembre 2015
19 juil. 2011 à 14:29
Je me suis rendu compte qu'il n'aime pas trop les l'écriture range(cells(), cells())... Je sais pas pourquoi... pourtant en principe ça marche et dans certains cas ça marche même chez moi...

j'ai donc remplacé par une écriture plus conventionnelle range("A" & (i + 2) & ":M" & (i + 2)) ...


bref...



nitho l'amateur
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
19 juil. 2011 à 12:34
Bonjour,

Il nous faut savoir :
- Ce que tu attends que retourne la variable Myrow
- de quel type est la variable Mafeuille et ce qu'elle contient.


____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
cs_nitho Messages postés 130 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 8 décembre 2015
19 juil. 2011 à 13:23
Mafeuille est de type string et retourne le nom d'une feuille
je veux que myRow contienne en mémoire le range de cells(i + 2, 1) à cells(i + 2, 13).

Au moment du bug, les variable Mafeuille, et i retournent bien ce que j'attends... mais j'ai une erreur...



nitho l'amateur
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
19 juil. 2011 à 15:19
je veux que myRow contienne en mémoire le range de cells(i + 2, 1) à cells(i + 2, 13)

Déjà : un range est une plage. (si c'est bien la plage - comme tu l'exprimes - que tu veux mettre en mémoire... et non un "tableau" de ses valeurs )
regarde
Dim mafeuille As String, i As Integer, myrow As Range
mafeuille = "Feuil1"
i = 1
With Worksheets(mafeuille)
  Set myrow = .Range(.Cells(i + 2, 1), .Cells(i + 2, 13))
End With
MsgBox myrow.Address




____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0

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

Posez votre question
cs_nitho Messages postés 130 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 8 décembre 2015
22 juil. 2011 à 18:24
En fait c'est vrai je voulais écrire en mémoire les valeurs du range et non le range en entier....

ça me donne des idées ton bout de code ...
Mais, je me pose des questions...

lorsque je fait par ex:

set ws = thisworkbook.sheets(1)

tu va dire que j'ai chargé la feuille en mémoire.
Mais si par la suite j'éffectue des modifs sur ws elle seront repercutée sur la feuille de mon classeur.

du coup je me dit que ça doit être moins performant, d'autant plus que l'objet range est plus lourd que le tableau de valeur que moi je manipule.

en fait charger l'objet range en mémoire avec un set comme tu l'as fait ne revient t-il pas à avoir une plage nommée dans son code ???

Je parle du point de vue perf



nitho l'amateur
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 juil. 2011 à 19:20
Mais rien ne t'empêche de traiter un tableau ! (c'est le nom MyRow, qui me faisait me poser des questions, c'est tout !
Un tablerau, alors ? ===>>

[code=vb]Dim mafeuille As String, i As Integer, montabl
mafeuille = "Feuil1"
i = 1
With Worksheets(mafeuille)
  montabl = .Range(.Cells(i + 2, 1), .Cells(i + 2, 13))
  'montabl = .Range("A1:A3")
End With
For x = 1 To UBound(montabl, 2)
  MsgBox montabl(1, x) ' (1,x) et pas (x,1) car il s'agit d'un tableau de
                        ' une seule ligne et plusieurs colonnes, hein.
Next
/code

Regarde bien la ligne commentée.
____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
Rejoignez-nous