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
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 :
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
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" <Fan@NOSPAM> a écrit dans le message de news:
%23ElPpwMbIHA.4144@TK2MSFTNGP05.phx.gbl...
Merci, mais si la copie est dans le même classeur et celui-ci étant actif,
pourquoi descendre au niveau du classeur. ?
"isabelle" <i@v> a écrit dans le message de
news:%237%23IU$LbIHA.4144@TK2MSFTNGP05.phx.gbl...
bonjour Fan,
il faut inclure le nom des classeurs, par exemple :
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 :
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
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 :
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
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" <banni@lacurie.va> a écrit dans le message de
news:Or2GMENbIHA.1204@TK2MSFTNGP03.phx.gbl...
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" <Fan@NOSPAM> a écrit dans le message de news:
%23ElPpwMbIHA.4144@TK2MSFTNGP05.phx.gbl...
Merci, mais si la copie est dans le même classeur et celui-ci étant
actif,
pourquoi descendre au niveau du classeur. ?
"isabelle" <i@v> a écrit dans le message de
news:%237%23IU$LbIHA.4144@TK2MSFTNGP05.phx.gbl...
bonjour Fan,
il faut inclure le nom des classeurs, par exemple :
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 :
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
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 :
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
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" <Fan@NOSPAM> a écrit dans le message de news: %23M4irjPbIHA.4208@TK2MSFTNGP04.phx.gbl...
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" <banni@lacurie.va> a écrit dans le message de
news:Or2GMENbIHA.1204@TK2MSFTNGP03.phx.gbl...
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" <Fan@NOSPAM> a écrit dans le message de news:
%23ElPpwMbIHA.4144@TK2MSFTNGP05.phx.gbl...
Merci, mais si la copie est dans le même classeur et celui-ci étant
actif,
pourquoi descendre au niveau du classeur. ?
"isabelle" <i@v> a écrit dans le message de
news:%237%23IU$LbIHA.4144@TK2MSFTNGP05.phx.gbl...
bonjour Fan,
il faut inclure le nom des classeurs, par exemple :
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 :