Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

perso.xls

5 réponses
Avatar
Fan
Bonjour;

J'ai un classeur actif et mon classeur perso.xls qui contient quelques
procédures.

Pourquoi la ligne ci-dessous ne s'execute que si elle est contenu dans une
procédure appartenant au classeur actif et non dans le classeur perso.xls.

Feuil1.Rows(t).Copy Feuil1.Rows(t+1)

Merci

5 réponses

Avatar
isabelle
bonjour Fan,

il faut inclure le nom des classeurs, par exemple :

Workbooks("PERSO.XLS").Sheets("Feuil1").Rows(t).Copy _
Workbooks("Classeur1").Sheets("Feuil1").Range("A1")

isabelle

Bonjour;

J'ai un classeur actif et mon classeur perso.xls qui contient quelques
procédures.

Pourquoi la ligne ci-dessous ne s'execute que si elle est contenu dans une
procédure appartenant au classeur actif et non dans le classeur perso.xls.

Feuil1.Rows(t).Copy Feuil1.Rows(t+1)

Merci




Avatar
Fan
Merci, mais si la copie est dans le même classeur et celui-ci étant actif,
pourquoi descendre au niveau du classeur. ?


"isabelle" a écrit dans le message de
news:%237%23IU$
bonjour Fan,

il faut inclure le nom des classeurs, par exemple :

Workbooks("PERSO.XLS").Sheets("Feuil1").Rows(t).Copy _
Workbooks("Classeur1").Sheets("Feuil1").Range("A1")

isabelle

Bonjour;

J'ai un classeur actif et mon classeur perso.xls qui contient quelques
procédures.

Pourquoi la ligne ci-dessous ne s'execute que si elle est contenu dans
une


procédure appartenant au classeur actif et non dans le classeur
perso.xls.



Feuil1.Rows(t).Copy Feuil1.Rows(t+1)

Merci







Avatar
Mgr Banni
le perso.xls est actif lui aussi
et si tu lances une proc depuis ce dernier sans préciser le classeur dans
lequel la proc doit travailler, eh ben, le perso.xls considère que c'est
chez lui que ça doit se passer...et évidemment ça foire
Mgr T.B. (qui a fait bref, presque brutal mais l'heure de l'angelus
approche)

"Fan" a écrit dans le message de news:
%
Merci, mais si la copie est dans le même classeur et celui-ci étant actif,
pourquoi descendre au niveau du classeur. ?


"isabelle" a écrit dans le message de
news:%237%23IU$
bonjour Fan,

il faut inclure le nom des classeurs, par exemple :

Workbooks("PERSO.XLS").Sheets("Feuil1").Rows(t).Copy _
Workbooks("Classeur1").Sheets("Feuil1").Range("A1")

isabelle

Bonjour;

J'ai un classeur actif et mon classeur perso.xls qui contient quelques
procédures.

Pourquoi la ligne ci-dessous ne s'execute que si elle est contenu dans
une


procédure appartenant au classeur actif et non dans le classeur
perso.xls.



Feuil1.Rows(t).Copy Feuil1.Rows(t+1)

Merci











Avatar
Fan
je comprends cette logique.

Ce que je ne comprends pas c'est pourquoi :
Feuil1.Rows(t).Copy Feuil1.Rows(t+1)

ne s'excute pas alors que :

Rows(t).Copy Rows(t+1)

Quelqu'un aurait une idée ?

merci



"Mgr Banni" a écrit dans le message de
news:
le perso.xls est actif lui aussi
et si tu lances une proc depuis ce dernier sans préciser le classeur dans
lequel la proc doit travailler, eh ben, le perso.xls considère que c'est
chez lui que ça doit se passer...et évidemment ça foire
Mgr T.B. (qui a fait bref, presque brutal mais l'heure de l'angelus
approche)

"Fan" a écrit dans le message de news:
%
Merci, mais si la copie est dans le même classeur et celui-ci étant
actif,


pourquoi descendre au niveau du classeur. ?


"isabelle" a écrit dans le message de
news:%237%23IU$
bonjour Fan,

il faut inclure le nom des classeurs, par exemple :

Workbooks("PERSO.XLS").Sheets("Feuil1").Rows(t).Copy _
Workbooks("Classeur1").Sheets("Feuil1").Range("A1")

isabelle

Bonjour;

J'ai un classeur actif et mon classeur perso.xls qui contient
quelques




procédures.

Pourquoi la ligne ci-dessous ne s'execute que si elle est contenu
dans




une
procédure appartenant au classeur actif et non dans le classeur
perso.xls.



Feuil1.Rows(t).Copy Feuil1.Rows(t+1)

Merci















Avatar
MichDenis
Copie cette procédure dans un module standard de ton perso.xls

'-----------------------
Sub Denis()
MsgBox Feuil1.Parent.Name
MsgBox Rows(1).Parent.Parent.Name
End Sub
'-----------------------

Quand tu utilises le Nom De la propriété "Name" de l'objet "feuille"
dans la macro, tu interpelles "toujours" l'objet qui est dans le
classeur spécifique. Cet objet appartient au classeur.

Quant tu utilises seulement cette syntaxe Rows(1) , l'objet "Ligne"
dans un module standard, cet objet appartient pas seulement au classeur
actif mais à la feuille active du classeur actf. et cela est vrai que cette ligne
de code soit dans un module standard de ton perso ou de tout autre classeur.

Si tu copies la même procédure dans un module "feuil" de ton classeur perso.xls
cela ne fait pas de différence pour l'objet "feuil" que tu appelles par son nom, mais
l'objet Rows(1) relève maintenant de la feuille dans lequel le code est inscrit et
non dans la feuille du classeur actif. Et la raison est bien simple ....

Un objet "Feuil" représente une classe d'objet spécifique du langage VBA d'excel.
Toutes les propriétés et Méthodes applicables à cette feuille sont définies à l'intérieur
du même module de classe... ce qu'on appelle "Encapsulation" en langage de
programmation objet. La page blanche de l'objet "Feuil" où tu écris ton code
représente l'interface qui permet à l'usager de compléter le code de ce module de
classe. Ainsi, il y a les événements (liste déroulante de droite dans le haut de la feuille)
qui eux sont définis en durs mais les actions qu'ils génèrent sont définis par l'usager...
Tout ceci s'imbrique dans le même module de classe ... comme si tu étais membre
de l'équipe de programmation "Microsoft" ! En conséquence, si ton code utilises
dans ce module de classe un objet "Rows(1)" sans spécifier à quelle feuille qu'il
appartient, Excel interprète cette commande comme faisant référence à la feuille
d'où le code est écrit ... c'est la logique même !

Si tu as compris le dernier paragraphe, c'est exactement la même chose pour ce qui
est de l'objet "Feuil" par rapport au classeur. Lorsque celui-ci est utilisé dans le
code d'un module standard, ce dernier (module standard) représente l'espace
public d'un classeur i.e qui permet de définir des fonctions ou procédures et
variables (publics) qui sont habituellement applicables à tous les modules de
classe du classeur ("Feuil", "module de clzsse" , "ThisWorkbook") du classeur
sinon ces procédures ou fonctions particulières "doivent" s'inscrire dans le
module de classe où leur utilité est requise et non du module standard.

Si tu n'as rien compris, cela t'aura peut être servi de somnifère!!!!
;-))




"Fan" a écrit dans le message de news: %
je comprends cette logique.

Ce que je ne comprends pas c'est pourquoi :
Feuil1.Rows(t).Copy Feuil1.Rows(t+1)

ne s'excute pas alors que :

Rows(t).Copy Rows(t+1)

Quelqu'un aurait une idée ?

merci



"Mgr Banni" a écrit dans le message de
news:
le perso.xls est actif lui aussi
et si tu lances une proc depuis ce dernier sans préciser le classeur dans
lequel la proc doit travailler, eh ben, le perso.xls considère que c'est
chez lui que ça doit se passer...et évidemment ça foire
Mgr T.B. (qui a fait bref, presque brutal mais l'heure de l'angelus
approche)

"Fan" a écrit dans le message de news:
%
Merci, mais si la copie est dans le même classeur et celui-ci étant
actif,


pourquoi descendre au niveau du classeur. ?


"isabelle" a écrit dans le message de
news:%237%23IU$
bonjour Fan,

il faut inclure le nom des classeurs, par exemple :

Workbooks("PERSO.XLS").Sheets("Feuil1").Rows(t).Copy _
Workbooks("Classeur1").Sheets("Feuil1").Range("A1")

isabelle

Bonjour;

J'ai un classeur actif et mon classeur perso.xls qui contient
quelques




procédures.

Pourquoi la ligne ci-dessous ne s'execute que si elle est contenu
dans




une
procédure appartenant au classeur actif et non dans le classeur
perso.xls.



Feuil1.Rows(t).Copy Feuil1.Rows(t+1)

Merci