Date ,jour,mois,année

A

Alyre

Guest
Bonsoir a tous et joyeuse paque

qui pourais me dire comment placer ses Sub, pour qu'a chaque mois elle change de feuille automatique


Sub recopie()

selectionfeuille

DernLigneVide = Sheets(2).Range("a65536").End(xlUp).Row

If Sheets(3).Range("b2").Value = "" Then premligneVide = 2 Else premligneVide = Sheets(3).Range("b2").End(xlDown).Row + 1

With Worksheets(2)
.Range("a20:h" & DernLigneVide).Copy Worksheets(3).Range("b" & premligneVide)
End With
End Sub


Sub selectionfeuille()
Dim k As Integer

If Day(Range("B2")) = 1 Then 'On est le 1er

k = Month(Range("B2"))
Sheets(k).Select
End If
End Sub


Merci a l'avance @ ++++
 
Z

Zon

Guest
Re

sub essai ()

DernLigneVide = Sheets(2).Range("a65536").End(xlUp).Row
If Day(Range("B2")) = 1 Then 'On est le 1er
k = Month(Range("B2"))
end if
If Sheets(k).Range("b2").Value = "" Then
premligneVide = 2
Else premligneVide = Sheets(k).Range("b2").End(xlDown).Row + 1

With Worksheets(2)
.Range("a20:h" & DernLigneVide).Copy Worksheets(k).Range("b" & premligneVide)
End With
End Sub



Je crois que ce code bêta de version bêta sans déclaration de variable, sans test et sachant pas trop quoi faire, devrait correpondre à ce qaue tu veux Alyre c'est à dir copiert ta plage de cellules quan on change de mois....



A+++


PS BIS, TER le fichier exemple
 
A

Alyre

Guest
Bonsoir a tous , Myta , Zon

merci d'avoir répondu a mon message , vous être supperbe .

Ce que je veux faire , je m'explique

j'ai un fichier excel pour placer des commandes , quand la commande est remplie, j'envoie une copie de ma commande pour un inventaire sur un autre feuil , et chaque fois que je fait une commande mes donner s'acumule, c'ette fonction marche tres bien

mais ce que je voudrais ce serais que mes donner s'incrive dans la feuille nommer de chaque mois , ce que je veux dire si ont est aux mois d'avril quelle s'incrive dans le mois d'avril, et si ont est rendu a la fin du mois elle change pour le mois mai automatique

A++++++

alyre
 
Z

Zon

Guest
Re

sub essai ()
DernLigneVide = activeSheets.Range("a65536").End(xlUp).Row
If Day(Range("B2")) = 1 Then 'On est le 1er
k = Month(Range("B2"))
end if
If Sheets(k).Range("b2").Value = "" Then
premligneVide = 2
Else premligneVide = Sheets(k).Range("b2").End(xlDown).Row + 1

With activesheet
.Range("a20:h" & DernLigneVide).Copy Worksheets(k).Range("b" & premligneVide)
End With
End Sub

Je n'ai pas tester quelque soit la feuille la feuille active on copie sur celle du mois d'aprés...

A++
 
Z

Zon

Guest
Re

Voilà il manquait un end if

sub essai ()
DernLigneVide = activeSheets.Range("a65536").End(xlUp).Row
If Day(Range("B2")) = 1 Then 'On est le 1er
k = Month(Range("B2"))
end if
If Sheets(k).Range("b2").Value = "" Then
premligneVide = 2
Else premligneVide = Sheets(k).Range("b2").End(xlDown).Row + 1
end if
With activesheet
.Range("a20:h" & DernLigneVide).Copy Worksheets(k).Range("b" & premligneVide)
End With
End Sub

A+++
 
Z

Zon

Guest
Bonjour à tous et Joyeuse Pâques,


Voici le bon code Alyre, étant donné que Janvier est en 3eme position et que la feuille d'où seront copiés les données:


Sub copie()
Dim ws, ws1 As Worksheet
Dim L1, L2 As Integer
Application.ScreenUpdating = True 'évite les traitements de la macro à l'écran
1
For i = 1 To Sheets.Count
If Sheets(i).Name = "Order form" Then
Set ws = Sheets("Order form") 'la variable worksheet ws sera Order form
L1 = ws.Range("A65536").End(xlUp).Row 'derniere ligne non vide dans Order form
GoTo 2
End If
Next i
If i = Sheets.Count Then MsgBox "LA FEUILLE ORDER FORM N'EXISTE PAS", vbCritical, "ERREUR DE NOM DE FEUILLE"
GoTo sortie
2
ws.Activate
With ws
If IsDate(Range("C2")) Then 'Test pour voir si C2 contient bien une date
k = Month(Range("C2")) 'on récupère le mois
GoTo 3
Else: MsgBox "LA CELLULE C2 N'EST PAS UNE DATE", vbCritical, "ERREUR DE SAISIE"
Range("C2").Select
GoTo sortie
End If
End With
3
If k + 2 > Sheets.Count Then
MsgBox "UNE FEUILLE MOIS N'EXISTE PAS", vbCritical, "ERREUR DE MOIS"
GoTo sortie
Else:
Set ws1 = Sheets(k + 2)
L2 = ws1.Range("B65536").End(xlUp).Row + 1 'Premeière ligne non vide dans une des feuilles mois
ws.Range("A20:H" & L1).Copy ws1.Range("B" & L2) 'copie de la plage
Sheets(k + 2).Select
End If
sortie:
Application.ScreenUpdating = True
End Sub


A+++
 
A

Alyre

Guest
Bonjour a tous et surtout a Zon

tu est le Kin pour avoir résoulu mes erreurs, avec autant de rapidité

Il y avais seulment une petite erreur de frape dans Order form, il falais que Form sois écrit avec un F magiscule, si non elle ne trouvais pas la feuille

Toutes marche a 100 milles a l'heures maintenant, je suis émerveillé et tres satisfait de ton bon travail, Bravo je te félicite et te remerci mille fois

tu est un génie pour avoir compris mes attentes qui n'étais pas tres claire, et en plus de t'avoir enduit en erreur en n'expliquant pas que janvier étais belle et bien a la 3eime position au lieu de la première feuille.

Peut-être sans le savoir tu ma fait un tres beau cadeau de pâque
je te remerci encore et joyeuse pâque a toi et a ta famille.

si j'ai besoin de d'autres expliquations je n'hésiterai pas a faire signe.

@ ++

alyre
 
A

Alyre

Guest
Bonsoir le forum et Zon

je vien encore demander ton aide Zon,

pourais tu me dire comment faire pour transféré la Date qui est dans la feuilles Order Form cellule (C2)

et l'incrire dans la feuilles Mois cellule (A)


Zon : tu va reconaitre la formule que tu ma écrite, elle fonctionne a merveille
mais je veux ajouter un + a cette belle formule


Sub copie()
Dim ws, ws1 As Worksheet
Dim L1, L2 As Integer
Application.ScreenUpdating = True 'évite les traitements de la macro à l'écran
1
For i = 1 To Sheets.Count
If Sheets(i).Name = "Order form" Then
Set ws = Sheets("Order form") 'la variable worksheet ws sera Order form
L1 = ws.Range("A65536").End(xlUp).Row 'derniere ligne non vide dans Order form
GoTo 2
End If
Next i
If i = Sheets.Count Then MsgBox "LA FEUILLE ORDER FORM N'EXISTE PAS", vbCritical, "ERREUR DE NOM DE FEUILLE"
GoTo sortie
2
ws.Activate
With ws
If IsDate(Range("C2")) Then 'Test pour voir si C2 contient bien une date
k = Month(Range("C2")) 'on récupère le mois
GoTo 3
Else: MsgBox "LA CELLULE C2 N'EST PAS UNE DATE", vbCritical, "ERREUR DE SAISIE"
Range("C2").Select
GoTo sortie
End If
End With
3
If k + 2 > Sheets.Count Then
MsgBox "UNE FEUILLE MOIS N'EXISTE PAS", vbCritical, "ERREUR DE MOIS"
GoTo sortie
Else:
Set ws1 = Sheets(k + 2)
L2 = ws1.Range("B65536").End(xlUp).Row + 1 'Premeière ligne non vide dans une des feuilles mois
ws.Range("A20:H" & L1).Copy ws1.Range("B" & L2) 'copie de la plage
Sheets(k + 2).Select
End If
sortie:
Application.ScreenUpdating = True
End Sub



Merci a l'avance et bonne soirée
@++
alyre
 

Discussions similaires

  • Question
Microsoft 365 Code VBA
Réponses
10
Affichages
704

Statistiques des forums

Discussions
314 653
Messages
2 111 579
Membres
111 206
dernier inscrit
Dante76