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

Vba ActiveCell

Calvus

XLDnaute Barbatruc
Bonsoir le Forum,

Pourquoi ce code fonctionne t'il ?
Code:
c = Sheets("Feuil1").Range("A2").Value
MsgBox (c)

Et pas celui-ci ?
Code:
c = Sheets("Feuil1").ActiveCell.Value
MsgBox (c)

ActiveCell étant la cellule A2 bien évidemment.

Merci.
 

Zdz16

XLDnaute Occasionnel
Re : Vba ActiveCell

Bonjour à tous, au forum et bonne année.

Je n'ai pas pu déposer ma réponse à temps, mais j'ai tenu à vous le faire parvenir.

Cordialement
 

Pièces jointes

  • 01 - Calvus - Onglet sélectionner.xlsm
    27.6 KB · Affichages: 59
  • Piano.xlsm
    12.7 KB · Affichages: 40
  • Piano.xlsm
    12.7 KB · Affichages: 46

Calvus

XLDnaute Barbatruc
Re : Vba ActiveCell

Bonjour,

Merci Zdz16. La macro ne fonctionne pas correctement. Elle est soit inactive, ou alors génère une erreur.

00, ta macro est au poil , mais il y un point qui me chagrine.
Le classeur appelé, une fois la copie faite, est enregistré. Or j'aimerais ouvrir, copier et fermer SANS enregistrer.
Y a t'il une solution ?

Bonne journée.
 
Dernière édition:

Zdz16

XLDnaute Occasionnel
Re : Vba ActiveCell

Bonjour;

Peut tu me dire plus, car chez moi cela fonctionne parfaitement.

Quelques petites remarques.
  • Lorsque le nombre de cellules sélectionnées est supérieur à 1, pas de traitement
  • Si la feuille à créer existe, il n' y a pas de traitement
  • Si le nom de la nouvelle feuille est vide, pas de traitement car le macro fonctionne sur toutes les cellules.
  • Le fichier Piano.xlsm doit être dans le bon répertoire "D:\Temp", sinon il faut changer le répertoire dans la macro.

Re-edition:
Il me semble qu'il y a une erreur de frappe dans la Sub ImportData peut-tu remplace le bloc 'Ouverture de classeur source ...' par celui-ci
Code:
    'Ouverture du classeur source et controle si la feuille y existe
    Set ObjWrk = Workbooks.Open(SrcWrk)
    If Not IsSheetExist(SrcShe) Then
        MsgBox "La feuille " & SrcShe & " est absente dans le classeur " & SrcWrk
        ObjWrk.Close
        Exit Sub
    End If


Cordialement
 
Dernière édition:

Calvus

XLDnaute Barbatruc
Re : Vba ActiveCell

Re,

Merci Zdz. Ça fonctionne en effet maintenant. Et l'erreur était bien là où tu l'as corrigée.

Avec ta solution, une fois mon classeur ouvert et la copie effectuée, Excel me demande si je veux enregistrer les changements.
Je réponds non évidemment. Est il possible de rendre cela transparent ?

Merci et bonne journée.
 

Zdz16

XLDnaute Occasionnel
Re : Vba ActiveCell

Re-Bonjour;


DoubleZero t'as donné la réponse et qui se traduit par l'ajout de 'False' devant l'instruction de fermeture du classeur dans la sub ImportData.

Remplace :
'ferme le classeur source
ObjWrk.Close

Par
'ferme le classeur source
ObjWrk.Close False

Cordialement
 

Calvus

XLDnaute Barbatruc
Re : Vba ActiveCell

Bonjour le Forum,

Merci Zdz, c'est noté.

Je reviens avec le fichier de Double Zéro.

J'y ai ajouté des lignes afin de faire une publication pdf.
Mais sans succès.

Quelqu'un peut m'expliquer ce qui ne fonctionne pas dans le code ?

Merci

PS : Les annotations du codes ne sont pas nécessairement exactes, mais ce que j'en ai compris...
 

Pièces jointes

  • 00 - Calvus - Onglet d'un autre ficher Version 2.xlsm
    23.6 KB · Affichages: 29
  • Toto.xlsx
    9.6 KB · Affichages: 30
  • Toto.xlsx
    9.6 KB · Affichages: 29

DoubleZero

XLDnaute Barbatruc
Re : Vba ActiveCell

Bonjour à toutes et à tous,

Calvus , peux-tu tenter ceci :

Code:
Option Explicit
Sub Résultat_en_PDF_convertir()
    With Sheets("Feuil1")
        .Range("a14").CurrentRegion.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Users\00\Downloads\" & .Range("k1").Value & ".pdf" ' emplacement adapter
    End With
End Sub

A bientôt
 

Si...

XLDnaute Barbatruc
Re : Vba ActiveCell

bon... (sang mais c'est bien sûr )

si j'ai bien compris le problème*, un essai à partir du fichier fourni. Merci
Ne pas oublier de commencer par définir 2 éléments primordiaux (voir explications).
Non seulement on retrouve ActiveCell mais aussi ActiveWorkBook !

*sinon il me faudra revoir ma copie
 

Pièces jointes

  • Onglet d'un autre ficher Version PDF.xlsm
    23.4 KB · Affichages: 32

Calvus

XLDnaute Barbatruc
Re : Vba ActiveCell

Bonsoir Sissi

J'ai réussi, et oui, une fois n'est as coutume ! à refaire un code fonctionnel ! Yep !!

Une seule chose qui ne fonctionne pas encore, c'est la mise en forme.

Je te laisse jeter un coup d'oeil si tu veux bien, pendant que je regarde ton code.

Voici ce que j'ai bidouillé :
Code:
Sub essai()

Vers_où = Selection.Text

'Ouverture du classeur
Set Planning = Workbooks.Open("C:\Users\Toto\Documents\Toto.xlsx")

ActiveWorkbook.Sheets(Vers_où).Activate

Planning.Sheets(Vers_où).Select
Range("B2:H34").Select
Selection.Copy
Planning.Close False

Sheets("Feuil1").Select
Range("K20").Select
ActiveSheet.Paste

 Dim fichier As String, Dossier As String, Chemin As String
   With Sheets("Feuil1")
    fichier = "\" & Range("K1") & ".pdf"
    Dossier = "C:\Users\Toto\Documents\Excel"
    Chemin = Dossier & fichier
    End With
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin, _
    Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=True

End Sub

Tout fonctionne, mais sans copie des bordures.

Et alors ça plante si je remplace
Code:
ActiveSheet.Paste
Par
Code:
ActiveSheet.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

Je vais regarder ton fichier maintenant.

Et Mercissi !!!

EDIT : Je n'arrive pas à lancer la macro. Ca bloque au niveau du chemin, je ne comprends pas pourquoi. J'ai pourtant suivi tes instructions, correctement me semble t'il... Mais bon, peut être la fatigue et la grippe n'aident elles pas. Je verrai demain.
Bonne nuit, merci.
 
Dernière édition:

Si...

XLDnaute Barbatruc
Re : Vba ActiveCell

re

Pour bénéficier au maximum du .Copy, j’aurais plutôt écrit dans la page de code de l'onglet du bouton

VB:
Sub essai()
    Set Ici = ThisWorkbook    'pour la copie
    Vers_où = Selection.Text
'Ouverture du classeur
    Set Planning = Workbooks.Open("C:\Users\Toto\Documents\Toto.xlsx")
'de l'onglet
    Sheets(Vers_où).Activate
'copie  tout (sauf dimensions des lignes et colonnes)
    Sheets(Vers_où).Range("B2:H34").Copy Ici.Sheets("Feuil1").Range("K20")
    Planning.Close False
    Dim Chemin As String
    Chemin = "C:\Users\Toto\Documents\" & [K1] & ".pdf"
    Feuil1.ExportAsFixedFormat Type:=0, Filename:=Chemin, Quality:=0, _
           IncludeDocProperties:=1, IgnorePrintAreas:=0, OpenAfterPublish:=1
End Sub

Ant dernière ligne : Feuil1 pour toute la feuille ou une plage bien définie

Pour mon code : tu « Slash » ou tu « Clash »
 

Calvus

XLDnaute Barbatruc
Re : Vba ActiveCell

Bonjour Si, le Forum,


Réponse : L'indice n'appartient pas à la sélection...


Pour bénéficier au maximum du .Copy, j’aurais plutôt écrit dans la page de code de l'onglet du bouton

Peux tu me dire ce que ça change par rapport à l'écriture dans un module ?

Ant dernière ligne : Feuil1 pour toute la feuille ou une plage bien définie

Pour mon code : tu « Slash » ou tu « Clash »

Je ne comprends pas ces 2 phrases.

Merci et bonne journée.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…