Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
michdenis
Bonjour Andréa,
Si tu écris une macro dans le module de la feuille, tu dois obligatoirement tout au long de ton programme écrire la référence complète des objets. Contrairement au module Standard, le module de la feuille prend pour acquis que les objets "Range" et autres appartiennent à la feuille où tu écris le code. Si c'est objet appartient à une autre feuille, tu dois le spécifier explicitement.
Exemple : Tu écris le code en module de la feuil1 et tu veux faire référence à une cellule de la Feuil2
A = Worksheets("Feuil2").range("A25")
Si tu te contente d'écrire : A = range("A25")
La valeur retournée sera celle de la cellule de la feuille 1 , pas celle de la feuille 2
Il y a probablement possible de raccourcir ce code ...mais je n'ai pas le détail de ce que tu veux faire ...!
Cette façon d'écrire la procédure fonctionne peu importe que tu sois dans le module feuille ou module standard '------------------------------ Sub copier()
Application.ScreenUpdating = False With Sheets("mensuel") .Select ActiveCell.CurrentRegion.ClearContents End With
With Sheets("caisse") .Select .Unprotect .Range("A25").ClearContents .Range("A27").CurrentRegion.Select Selection.copy End With
With Sheets("mensuel") .Activate ActiveSheet.Paste Rows("1:1").Select End With End Sub '------------------------------
Salutations!
"Andrea Parker" a écrit dans le message de news: bonjour,
j'ai préparé une macro en enregistrement qui a bien fonctionné
mais lorsque maintenant j'essaie de la faire fonctionner
elle bloque à la ligne Rows("1:1").Select
avez vous une explication
est-ce parceque je l'ai déplacée du module à la feuille ?
merci d'avance en l'attente je continue à tester
Bonjour Andréa,
Si tu écris une macro dans le module de la feuille, tu dois obligatoirement tout au long de ton programme écrire la
référence complète des objets. Contrairement au module Standard, le module de la feuille prend pour acquis que les
objets "Range" et autres appartiennent à la feuille où tu écris le code. Si c'est objet appartient à une autre feuille,
tu dois le spécifier explicitement.
Exemple : Tu écris le code en module de la feuil1 et tu veux faire référence à une cellule de la Feuil2
A = Worksheets("Feuil2").range("A25")
Si tu te contente d'écrire :
A = range("A25")
La valeur retournée sera celle de la cellule de la feuille 1 , pas celle de la feuille 2
Il y a probablement possible de raccourcir ce code ...mais je n'ai pas le détail de ce que tu veux faire ...!
Cette façon d'écrire la procédure fonctionne peu importe que tu sois dans le module feuille ou module standard
'------------------------------
Sub copier()
Application.ScreenUpdating = False
With Sheets("mensuel")
.Select
ActiveCell.CurrentRegion.ClearContents
End With
With Sheets("caisse")
.Select
.Unprotect
.Range("A25").ClearContents
.Range("A27").CurrentRegion.Select
Selection.copy
End With
With Sheets("mensuel")
.Activate
ActiveSheet.Paste
Rows("1:1").Select
End With
End Sub
'------------------------------
Salutations!
"Andrea Parker" <andrea.parker@laposte.net> a écrit dans le message de news:4073C337.2020704@laposte.net...
bonjour,
j'ai préparé une macro en enregistrement qui a bien fonctionné
Si tu écris une macro dans le module de la feuille, tu dois obligatoirement tout au long de ton programme écrire la référence complète des objets. Contrairement au module Standard, le module de la feuille prend pour acquis que les objets "Range" et autres appartiennent à la feuille où tu écris le code. Si c'est objet appartient à une autre feuille, tu dois le spécifier explicitement.
Exemple : Tu écris le code en module de la feuil1 et tu veux faire référence à une cellule de la Feuil2
A = Worksheets("Feuil2").range("A25")
Si tu te contente d'écrire : A = range("A25")
La valeur retournée sera celle de la cellule de la feuille 1 , pas celle de la feuille 2
Il y a probablement possible de raccourcir ce code ...mais je n'ai pas le détail de ce que tu veux faire ...!
Cette façon d'écrire la procédure fonctionne peu importe que tu sois dans le module feuille ou module standard '------------------------------ Sub copier()
Application.ScreenUpdating = False With Sheets("mensuel") .Select ActiveCell.CurrentRegion.ClearContents End With
With Sheets("caisse") .Select .Unprotect .Range("A25").ClearContents .Range("A27").CurrentRegion.Select Selection.copy End With
With Sheets("mensuel") .Activate ActiveSheet.Paste Rows("1:1").Select End With End Sub '------------------------------
Salutations!
"Andrea Parker" a écrit dans le message de news: bonjour,
j'ai préparé une macro en enregistrement qui a bien fonctionné
mais lorsque maintenant j'essaie de la faire fonctionner
elle bloque à la ligne Rows("1:1").Select
avez vous une explication
est-ce parceque je l'ai déplacée du module à la feuille ?
merci d'avance en l'attente je continue à tester
Andrea Parker
merci j'ai résolu le problème en la laissant dans le module et l'appeler de la feuille
mais j'ai bien compris tes explications merci cela fonctionne
si cela intéresse quelqu'un c'est une petite application pour "faire" la caisse chaque soir d'une petite boutique calcul des espèces, répartitions des cb cheque dans une banque ou l'autre calcul du fond caisse, journal de caisse et impression pour le comptable
cela serait peut-etre à simplifier mais cela fonctionne cordialement
michdenis a écrit:
Bonjour Andréa,
Si tu écris une macro dans le module de la feuille, tu dois obligatoirement tout au long de ton programme écrire la référence complète des objets. Contrairement au module Standard, le module de la feuille prend pour acquis que les objets "Range" et autres appartiennent à la feuille où tu écris le code. Si c'est objet appartient à une autre feuille, tu dois le spécifier explicitement.
Exemple : Tu écris le code en module de la feuil1 et tu veux faire référence à une cellule de la Feuil2
A = Worksheets("Feuil2").range("A25")
Si tu te contente d'écrire : A = range("A25")
La valeur retournée sera celle de la cellule de la feuille 1 , pas celle de la feuille 2
Il y a probablement possible de raccourcir ce code ...mais je n'ai pas le détail de ce que tu veux faire ...!
Cette façon d'écrire la procédure fonctionne peu importe que tu sois dans le module feuille ou module standard '------------------------------ Sub copier()
Application.ScreenUpdating = False With Sheets("mensuel") .Select ActiveCell.CurrentRegion.ClearContents End With
With Sheets("caisse") .Select .Unprotect .Range("A25").ClearContents .Range("A27").CurrentRegion.Select Selection.copy End With
With Sheets("mensuel") .Activate ActiveSheet.Paste Rows("1:1").Select End With End Sub '------------------------------
Salutations!
"Andrea Parker" a écrit dans le message de news: bonjour,
j'ai préparé une macro en enregistrement qui a bien fonctionné
mais lorsque maintenant j'essaie de la faire fonctionner
elle bloque à la ligne Rows("1:1").Select
avez vous une explication
est-ce parceque je l'ai déplacée du module à la feuille ?
merci d'avance en l'attente je continue à tester
merci
j'ai résolu le problème en la laissant dans le module
et l'appeler de la feuille
mais j'ai bien compris tes explications
merci
cela fonctionne
si cela intéresse quelqu'un
c'est une petite application
pour "faire" la caisse chaque soir d'une petite boutique
calcul des espèces, répartitions des cb cheque dans une banque ou l'autre
calcul du fond caisse, journal de caisse et impression pour le comptable
cela serait peut-etre à simplifier mais cela fonctionne
cordialement
michdenis a écrit:
Bonjour Andréa,
Si tu écris une macro dans le module de la feuille, tu dois obligatoirement tout au long de ton programme écrire la
référence complète des objets. Contrairement au module Standard, le module de la feuille prend pour acquis que les
objets "Range" et autres appartiennent à la feuille où tu écris le code. Si c'est objet appartient à une autre feuille,
tu dois le spécifier explicitement.
Exemple : Tu écris le code en module de la feuil1 et tu veux faire référence à une cellule de la Feuil2
A = Worksheets("Feuil2").range("A25")
Si tu te contente d'écrire :
A = range("A25")
La valeur retournée sera celle de la cellule de la feuille 1 , pas celle de la feuille 2
Il y a probablement possible de raccourcir ce code ...mais je n'ai pas le détail de ce que tu veux faire ...!
Cette façon d'écrire la procédure fonctionne peu importe que tu sois dans le module feuille ou module standard
'------------------------------
Sub copier()
Application.ScreenUpdating = False
With Sheets("mensuel")
.Select
ActiveCell.CurrentRegion.ClearContents
End With
With Sheets("caisse")
.Select
.Unprotect
.Range("A25").ClearContents
.Range("A27").CurrentRegion.Select
Selection.copy
End With
With Sheets("mensuel")
.Activate
ActiveSheet.Paste
Rows("1:1").Select
End With
End Sub
'------------------------------
Salutations!
"Andrea Parker" <andrea.parker@laposte.net> a écrit dans le message de news:4073C337.2020704@laposte.net...
bonjour,
j'ai préparé une macro en enregistrement qui a bien fonctionné
merci j'ai résolu le problème en la laissant dans le module et l'appeler de la feuille
mais j'ai bien compris tes explications merci cela fonctionne
si cela intéresse quelqu'un c'est une petite application pour "faire" la caisse chaque soir d'une petite boutique calcul des espèces, répartitions des cb cheque dans une banque ou l'autre calcul du fond caisse, journal de caisse et impression pour le comptable
cela serait peut-etre à simplifier mais cela fonctionne cordialement
michdenis a écrit:
Bonjour Andréa,
Si tu écris une macro dans le module de la feuille, tu dois obligatoirement tout au long de ton programme écrire la référence complète des objets. Contrairement au module Standard, le module de la feuille prend pour acquis que les objets "Range" et autres appartiennent à la feuille où tu écris le code. Si c'est objet appartient à une autre feuille, tu dois le spécifier explicitement.
Exemple : Tu écris le code en module de la feuil1 et tu veux faire référence à une cellule de la Feuil2
A = Worksheets("Feuil2").range("A25")
Si tu te contente d'écrire : A = range("A25")
La valeur retournée sera celle de la cellule de la feuille 1 , pas celle de la feuille 2
Il y a probablement possible de raccourcir ce code ...mais je n'ai pas le détail de ce que tu veux faire ...!
Cette façon d'écrire la procédure fonctionne peu importe que tu sois dans le module feuille ou module standard '------------------------------ Sub copier()
Application.ScreenUpdating = False With Sheets("mensuel") .Select ActiveCell.CurrentRegion.ClearContents End With
With Sheets("caisse") .Select .Unprotect .Range("A25").ClearContents .Range("A27").CurrentRegion.Select Selection.copy End With
With Sheets("mensuel") .Activate ActiveSheet.Paste Rows("1:1").Select End With End Sub '------------------------------
Salutations!
"Andrea Parker" a écrit dans le message de news: bonjour,
j'ai préparé une macro en enregistrement qui a bien fonctionné