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

VBA DTPicker a copier sur plusieurs feuilles

  • Initiateur de la discussion Jean P
  • Date de début
J

Jean P

Guest
Bonjour à tous

J'ai un petit problème sur lequel je bloque.

Situation:
a) à l'aide d'un usf (déja fait)
b) je choisi une date (DTPicker - déja fait)
c) et je dois la copier sur plusieurs feuilles du classeur cible
d) a chaque jour je recommence la même macro, donc la date doit changer de colonne à chaque fois

Problème:
a) j'ai un message d'erreur 91 - Variable objet ou variable de bloc With non définie
b) et le débogeur m'amène à la ligne : WSname = WS.Name

Voici ce que j'ai fait pour l'instant (et ce, en adpatant différentes solutions trouvés sur le forum ):

Private Sub CommandButton1_Click()
Dim WBCible As Workbook
Dim WS As Worksheet
Dim WSname As String
Dim Jour As Variant
Set WBCible = Workbooks("Historique cartierville.xls")
Jour = DateValue(DTPicker1.Value)
WSname = WS.Name
With WBCible.Sheets(WSname)
Jour.Copy .Cells(15, .Range("IV15").End(xlToLeft).Column + 1)
End With
Exit Sub
Unload Me
End Sub


Merci pour votre aide


Jean P
 
S

STéphane

Guest
bonjour

tu n'as pas défini l'objet WS/

utilises par exemple par exemple :
set WS=worksheets("feuilledujour")


je regarde le reste de ton code, et tu vas me dire si je l'ai bien compris

Jour.Copy .Cells(15, .Range("IV15").End(xlToLeft).Column + 1)
=> cette instruction est censée recopier la date sélectionnée en ligne 15 après la dernière colonne non vide.
MAIS, jour n'est pas une cellule !
il faut plutôt écrire :
.Cells(15, .Range("IV15").End(xlToLeft).Column + 1).value=Jour


bonne fin de journée
 
@

@+Thierry

Guest
Bonjour Jean, STéphane, le Forum

Juste un petit coucou à STéphane que je ne voyais plus depuis un bail.

Ah oui quand même par rapport au code de Jean, tu as tout à fait raison pour le "Jour" Stéphane, et aussi pour la variable WS (Worksheet) car elle n'est pas initialisée du tout... Donc WS.Name d'où le message d'erreur... Soit il te manque la boucle du style :
For Each WS in WBCible.WorkSheets
Soit il manque autre chose... Comme proposé par Stéphane, mais si c'est juste pour une feuille tu pourrais aller plus directement...

Et aussi à quoi sert le Exit Sub avant le Unload Me ... (?)

Bonne Fin de Journée
@+Thierry
 
J

Jean P

Guest
Bonjour à vous deux et au forum

Je vous remercie grâce à vos commentaires j'ai résolu mon problème.

Stéphane tu avais parfaitement compris pour la copie de la date dans la dernière colonne vide.

Thierry avais raison, j'avais oublié la boucle For each WS ...

Voici les correction que j'ai apporté et cela fonctionne parfaitement:

Private Sub CommandButton1_Click()
Dim WBCible As Workbook
Dim WS As Worksheet
Dim WSname As String
Dim Jour As Variant
Set WBCible = Workbooks("Historique cartierville.xls")
Jour = DateValue(DTPicker1.Value)
For Each WS In WBCible.Worksheets
WSname = WS.Name
With WBCible.Sheets(WSname)
.Cells(15, .Range("IV15").End(xlToLeft).Column + 1).Value = Jour
End With
Next
Unload Me
End Sub

Encore une fois merci

Jean P
 

Discussions similaires

Réponses
9
Affichages
254
Réponses
4
Affichages
356
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…