Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Déclarer dans code VBA non d'onglet variable

  • Initiateur de la discussion Initiateur de la discussion yoyobat
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Y

yoyobat

Guest
Salut le forum,

Je suis confronté à un nouveau problème sur lequel je me casse les dents:
- je voudrais copier une plage de données d'une feuille avec un nom d'onglet variable dans une autre feuille avec un nom d'onglet fixe.

Le problème vient du fait que je ne connais pas à l'avance les noms des onglets.

Tout ce que je peux dire c'est que le nom se trouvera dans la cellule O2 de ma feuille à nom variable.

Ma macro arrive à trouver la plage de destination mais pas celle de départ.

Voici le code (mon fichier est vraiment trop lourd pour le mettre désolé):


Private Sub CommandButton1_Click() 'bouton "Copier"

Dim pl As Range 'déclare la variable pl (PLage)
Dim dest As Range 'déclare la variable dest (DESTination)
ActiveCell.Select 'enlève le focus au bouton
With Sheets(Range("O2").Value) 'prend en compte l'onglet
Set pl = Sheets(Range("O2").Value).Range("S25:S30") 'définit la plage pl

Set dest = Sheets("Comparatif BPE").Range("IV6").End(xlToLeft).Offset(0, 1) 'définit la cellule de destination
End With 'fin de la prise en compte de l'onglet "Feuil1"
pl.Copy dest 'copie la plage pl dans la cellule de destination

End Sub


Merci de votre aide.

Yoyobat
 
Re : Déclarer dans code VBA non d'onglet variable

Bonjour,

essaye comme cela

Code:
Private Sub CommandButton1_Click() 'bouton "Copier"

Dim pl As Range 'déclare la variable pl (PLage)
Dim dest As Range 'déclare la variable dest (DESTination)
ActiveCell.Select 'enlève le focus au bouton
With Sheets(CStr(Range("O2"))) 'prend en compte l'onglet
Set pl = .Range("S25:S30") 'définit la plage pl
Set dest = Sheets("Comparatif BPE").Range("IV6").End(xlToLeft).Offset(0, 1) 'définit la cellule de destination
End With 'fin de la prise en compte de l'onglet "Feuil1"
pl.Copy dest 'copie la plage pl dans la cellule de destination

End Sub
Bonne Journée
 
Re : Déclarer dans code VBA non d'onglet variable

Salut DL_13,

Tout d'abord merci de te pencher sur le problème c'est sympa.

Malheureusement, cela ne marche toujours pas, il me trouve bien la destination mais il m'affiche #Ref dans les cellules de destination

Saurais-tu pourquoi ?? C'est comme si il ne me trouvait pas les cellules sources du copier/coller ??

Merci de ton aide.

Yoyobat
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
924
Réponses
12
Affichages
1 K
  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…