Bonjour le Forum,
J’aurais besoin de votre aide et mes notions de VBA ne sont pas suffisantes pour réaliser ce que je souhaite. Voici mon problème :
En farfouillant, j’ai trouvé quelque chose
Sub Copier() ActiveSheet.Range(ActiveCell, ActiveCell.Offset(0, 8)).Copy With Sheets("Archives") .Range("A119 :L537").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues End With Application.CutCopyMode = False End Sub
je souhaiterais ajouter la macro au code suivant :
Sub enreg() Dim LePath As String, LeNom As String LePath = "C:\Documents and Settings\Administrateur\Mes documents\" LeNom = "classeur_" & Format(Date, "yyyy_mm_dd") & ".xls" With Sheets("Feuil1") Sheets.Add .Range("A119 :L537").Copy Range("A1") ActiveSheet.Move With ActiveWorkbook .SaveAs LePath & LeNom .Close False End With End With End Sub
Le nom de l’onglet à copier se trouve en cellule « D232 »
Le nom du nouvel onglet se situe en cellule « O18 » de la nouvelle feuille active.
Est-il possible d’avoir ce genre de code mais au lieu de « classeur » avoir le nom identique de l’onglet actif de l’ancien classeur vers le nouveau et en faisant un collage spécial pour garder la même mise en page largeur colonnes, hauteurs de lignes et format cellule - nombre - personnalisée.
Est-ce réalisable?
Je suis bien consciente que ma demande est un peu longue mais pourriez vous m’aider ?
En vous remerciant,
Cliques sur le bouton « Recopie Classeur » situé en cellule « D3 » onglet « vc »
Vérifies dans le classeur (« classeur_ » & Format(Date, « yyyy_mm_dd ») créé ici ( « C:\Documents and Settings\Administrateur\Mes documents »)le résultat
Fais moi un retour
Désolé je viens d’ouvrir le fichier que je t’ai transmis en faisant un clique droit sur le bouton « Recopie Classeur » j’ai bien l’affectation de la macro « recopie_classeur » :
Fais un clique droit sur le bouton dans la liste cliques sur « Affecter une macro » puis dans la nouvelle liste sélectionnes la macro « recopie_classeur » :
Vraiment désolée. Je suis confuse.
Il s’agit de l’onglet je n’avais pas remarqué cette erreur importante de formulation.
Non je ne me permettrais pas de demander plus, je reformule.
je n’ai pas l’écran tel que présenté : voici le mien
En fait je souhaite cette macro Sub enreg() Dim LePath As String, LeNom As String LePath = "C:\Users\danhc\Documents\LANAIS\PLANS_ALIMENTAIRES\" LeNom = "**classeur_**" & Format(Date, "yyyy_mm_dd") & ".xls" With Sheets("Feuil1") Sheets.Add .Range("A119 :L537").Copy Range("A1") ActiveSheet.Move With ActiveWorkbook .SaveAs LePath & LeNom .Close False End With End With End Sub
macro qui copie les cellules A119 :L537
le nom de l’onglet de la plage de cellules a copier est contenu dans la cellule « D232 »
collage spécial pour garder les formats, formules etc…
je pensais que c’était la macro *Sub Copier() ActiveSheet.Range(ActiveCell, ActiveCell.Offset(0, 8)).Copy With Sheets("Archives") .Range("A119 :L537").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues End With Application.CutCopyMode = False End Sub*
Nouveau fichier après le collage spécial
le nom de l’onglet sera contenu alors dans la cellule « O18 » et sera le nom du fichier à sauvegarder dans C:\Users\danhc\Documents\LANAIS\PLANS_ALIMENTAIRES\valeur contenue dans la cellule « O18 »
Je vous ai mis les bons répertoire car je n’ai pas accès au texte de la macro.
La macro aprés avoir créé un nouveau classeur copie les cellules « A119:L537 » dans un de ses onglets qu’elle renomme « vc » puis l’enregistre dans le répertoire « C:\Documents and Settings\Administrateur\Mes documents » à ce nom : « classeur_ » & Format(Date, « yyyy_mm_dd »
Pour moi cela correspond trait pour trait à tes explications et les lignes de code fournies
Ce ne sont pas les mêmes que j’ai mis en place mais le résultat est strictement identique
Nouveaux classeur
intégration d’un onglet « vc »
recopie dans cet onglet des cellules « A119:L537 »
Enregistrement de ce classeur répertoire « C:\Documents and Settings\Administrateur\Mes documents » avec comme nom « classeur_ » & Format(Date, « yyyy_mm_dd »
Je ne vois pas ce que tu veux de différent ou de plus
« le mot classeur doit être le contenu de la cellule « D232 » »
Ce n’est n’est pas ce que tu as demandé concernant cette cellule « D232 » au regard de tes propos :
« Le nom de l’onglet à copier se trouve en cellule « D232 » »
L’onglet n’est pas le classeur !!!
Il faudrait être claire sur l’objet de cette cellule : Onglet ou classeur ?
Merci pour ce retour
Attention les cellules « D232 » et " O18" doivent impérativement être alimentées sinon bug en perspective
Pour l’éviter un contrôle peut être intégré vérifiant cette nécessité avec un message si celle-ci n’était pas effective et arrêt du traitement
A toi de voir et me dire
N oublies pas de valider ma réponse un plus appréciable
Merci
Ci-joint une nouvelle version avec cette évolution
Dans le même esprit je peux adapter ce traitement pour utiliser une cellule dans laquelle serait intégrée le chemin d’enregistrement (C:\Users\danhc\Documents\LANAIS\PLANS_ALIMENTAIRES) ainsi de l’avoir disponible pour toute évolution éventuelle le concernant
Une demande supplémentaire à laquelle je n’avais pas pensé
nom macro suggéré : imp_sauve_carte
est-il possible d’avoir le même principe avec les cellules de A13 à H41
le copier dans un nouveau classeur au niveau de A13
imprimer
sauvegarde idem mais en ajoutant au nom du fichier ('nom onglet suivi de) _carte
Attention on est pas sur le même fichier le chemin d accès n est pas le même
Compare dans l un l Emplacement dans l autre le Chemin d’accès au fichier
Ce n est pas le même donc on à faire à 2 fichiers differents
Une fois ton fichier téléchargé récupère le dans le dossier Téléchargement et copie le dans le repertoire de destination
Fais la manipulation du clique droit pour tenter de le débloquer et essaies de l ouvrir