XL pour MAC Copie de cellule

Delorme

XLDnaute Occasionnel
Bonjour à tous

je viens vers vous car je bute sur du langage VBA

J'ai fais 2 macros
La première fonctionne, et pas la deuxième alors que la syntaxe est la même seuls les cellules et feuilles different

2eme question

pourquoi en renommant manuellement une feuille, celle ci est refusée dans ma procédure ex: feuil3 renommee mois n'est pas acceptée dans copy dans la macro copymois

ci joint fichier

merci

MICHEL DELORME
 

Pièces jointes

  • copyvv.xlsm
    52 KB · Affichages: 3

JM27

XLDnaute Barbatruc
Bonsoir
Une feuille a deux propriétés nom
Le name de la feuille ( celui qui est inscrit sue l'onglet)
et le codename de la feuille ( le nom qui est inscrit dans le projet VBA
exemple :
Sheets("feuil1").Select : tu travailles avec le name de la feuille
Feuil2.Range("a3") : tu travailles avec le code name de la feuille.

Conclusion tes deux macro fonctionnent correctement.
Pour la macro 2:
Pour la feuille 4 le code name est Feuil3 donc en fait dans ta deuxième macro tu copies K17 sur cette même feuille en X15

Concernant le renommage manuel de la feuille c'est tout à fait normal que ta macro ne fonctionne plus , d'ou l'utilité de travailler avec le code name

En jaune le code name en rouge le name

Pour comprendre
Sub tutu()
MsgBox Sheets("Feuil4").CodeName
End Sub
Pour comprendre
VB:
Sub tutu()
    MsgBox Sheets("Feuil4").CodeName
End Sub
Capture.JPG
 
Dernière édition:

Phil69970

XLDnaute Barbatruc
Bonjour @Delorme
Edit Bonjour @JM27 désolé du doublon mais pas rafraichi !

Une remarque importante

Sheets("Feuil1")
n'est pas du tout pareil à Feuil1

Feuil1 fait référence au codename de la feuille
Feuil1.Range("A1")

Codename de la feuille

1652229089726.png


Alors que Sheets("Feuil1") fait référence au name de la feuille 1

Worksheets("Feuil1").Range("A1")

Name de la feuille

1652229114914.png


Et si en plus tu mélanges dans ton fichier le name et le codename

1673207055706.png


Donc quand tu écris ce code tu parles de quoi car c'est tordu pour le savoir
Sub rangecopymois()
Sheets("feuil4").Select
Range("k17").Select
Range("k17").Copy Feuil3.Range("x15")
End Sub

Et comme tu as interverti le name 3 avec le codename 4 et vice versa !!!! o_O

Et si tu veux renommer comme tu veux tes onglets alors il faut écrire ton code VBA avec le codename comme cela le nom interne de la feuille est toujours le même et non modifiable par l'utilisateur sans aller dans le code VBA.

Je te propose en tenant compte de ce que je viens de te dire :

Sub rangecopy()
Feuil2.Range("A3") = Feuil1.Range("D2")
End Sub
Et cela :
Mais sans certitude de ce que tu veux réellement faire ici
Sub rangecopymois()
Feuil4.Range("X15") = Feuil4.Range("K17")
End Sub

2eme question

pourquoi en renommant manuellement une feuille, celle ci est refusée dans ma procédure ex: feuil3 renommee mois n'est pas acceptée dans copy dans la macro copymois
C'est pourquoi tu plantes la macro quand tu renommes tes onglets voir mon explication plus haut !!!!

Merci de ton retour

@Phil69970
 

Delorme

XLDnaute Occasionnel
Bonjour
Merci de ta réponse
Je suis passionné d'excel et quelques fois j'ai beaucoup de difficultés à comprendre la logique du vba
je découvre avec toutes tes explications le name et code name des feuilles
je vais donc devoir digérer tout ca
au fil des videos YouTube j'essaie de refaire les exercices et je me plante royalement
je suis content de pouvoir poser mes problèmes sur ce site ou on me répond toujours et j'en garde sur mon ordi toutes ces réponses judicieuses
j'aurais aimé si tu as le temps de m'écrire la macro ou je peux employer le nom d'une feuille renommee manuellement, en attendant d'explorer toutes tes solutions
merci merci
MICHEL DELORME
 

Discussions similaires

Réponses
14
Affichages
465

Statistiques des forums

Discussions
312 215
Messages
2 086 324
Membres
103 179
dernier inscrit
BERSEB50