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

Saisi date automatique si la cellule rempli et problèmr de 00/01/1900!

Kamalo

XLDnaute Nouveau
Bonjour,

Quand je saisis manuellement dans la colonne K j'obtiens la saisi de la date automatique dans la colonne J à l'aide de la formule { SI(K2="";"";SI(J2<>"";J2;AUJOURDHUI())) } jusque ici tout va bien! mais quand je saisi dans la colonne J à l'aide d'un macro enregistré affecté à un bouton la colonne K donne la date 00/01/1900 au lieu de la date de jours que je cherche.

Je vous remercie d'avance de votre aide!
 
Solution
Merci bcp soan c'est très gentille!
J'espère que c'est ma dernière question

J'aimerais bien de créer sur mon classeur deux boutons ENREGISTRER et IMPRIMER pouvez vous me conseiller par un code VBA ou autre solution SVP?

Merci d'avance!

Kamalo

XLDnaute Nouveau
Bonjour soan,

Chaque fois une idée vient à ma tête j 'espère que soit la dernière!
maintenant mon tableau fonctionnent bien je voulais créer une autre feuille pour garder à chaque jour l'historique de mon tableau pouvez vous me proposer une solution SVP?

Merci d'avance!
 

soan

XLDnaute Barbatruc
Inactif
Bonsoir Kamalo,

sur le site XLD (Forum Excel) : en haut à droite de l'écran, sur la barre bleue du menu tu as le bouton « Rechercher » ; utilise-le pour faire une recherche sur le seul mot « archiver » : tu auras l'embarras du choix !

soan
 
Dernière édition:

Kamalo

XLDnaute Nouveau
Merci soan pour la réponse!

en effet je voulais pas créer un bouton pour archiver mais je voulais que ça se fasse automatique la chose que j'ai pas trouvé dans la méthode de recherche que vs m avez donnée.

Merci de me donner un lien si vous avez une solution!
 

soan

XLDnaute Barbatruc
Inactif
Bonjour Kamalo,

ta dernière demande est : « créer une autre feuille pour garder chaque jour l'historique de mon tableau » ; comme ça dépend de la structure de ton tableau, c'est mieux que tu joignes un fichier exemple (sans données confidentielles) ; sans ça, ta demande reste trop vague ; indique aussi le nom de la nouvelle feuille où il faut mettre l'historique : "Feuil2" ? "Historique" ? autre ?​

soan
 

soan

XLDnaute Barbatruc
Inactif
Bonsoir Kamalo,

je t'ai pas oublié, mais j'ai été occupé par des affaires persos ; j'viens d'terminer le fichier ; reviens dans environ une demi-heure et ça sera prêt, le temps qu'j'écrive mon prochain post avec le fichier + le mode d'emploi.

soan
 

soan

XLDnaute Barbatruc
Inactif
@Kamalo

mes excuses, ça a été plus long qu'prévu, mais c'est pour la bonne cause : tu as un mode d'emploi plus détaillé !

* regarde la feuille "archive", puis va sur "Feuille1" ; la cellule active est H5 ; fais Ctrl a ; vu ?

* retourne sur "Feuille1" ; va en H6 ; fais Ctrl a ; ok ?

* sur "Feuille1", va en H20, qui est actuellement vide ; dans la liste, choisis par exemple "Vacances" ; oui, à propos, j'ai corrigé la faute d'orthographe ; j'suis tout à fait persuadé que t'aimes beaucoup les vacances (comme la plupart des gens), mais ça s'écrit quand même avec 2 « c », pas 3 : en "Feuille2!V6" tu avais mis "Vaccances".

tu avais écrit que tu aurais aimé que l'archivage se fasse sans bouton, et automatiquement ; sans bouton, c'est fait, comme tu as pu le voir, puisque c'est avec un raccourci clavier (qui est Ctrl a) ; pour le côté automatique, tu n'as pas précisé comment ! il me semble que le mieux aurait été juste après avoir choisi un item dans la liste de la colonne H ; cependant, je suis tout à fait contre, et voici pourquoi :

en H20, tu viens de choisir "Vacances" ; exact, n'est-ce pas ? si l'archivage était automatique, ça écrirait les infos en feuille "archive", ok ? mais suppose que tu t'es trompé : tu n'aurais pas dû choisir "Vacances" ! ben c'est trop tard : la ligne a été archivée avec la mauvaise valeur "Vacances", donc double inconvénient : si tu corriges H20 en choisissant un autre item, ça va créer une ligne en double sur la feuille "archive", et en plus en laissant la mauvaise valeur "Vacances" ! d'autre part, tu seras obligé de corriger ces erreurs sur la feuille "archive" ; ainsi, comme ce n'est pas automatique, rien de tout ça : y'a pas ces inconvénients ; tu as juste à corriger en H20 en choisissant le bon item : à la place de "Vacances", sélectionne par exemple "Absent", puis ensuite, c'est seulement si t'es sûr de ton choix que tu choisis d'archiver : fais Ctrl a ; reste plus qu'un seul petit problème : que faire si tes employés prétendent qu'ils se sont juste absentés un p'tit moment alors qu'en réalité ils sont partis pour 2 mois en vacances aux Bermudes ? réponse du Big Boss Kamalo : « vous en faites pas, les gars ! j'viens vous rejoindre pour nager avec vous !!! » (et c'est pas grave : j'laisse la boîte couler ; on pointera tous au chômage au retour ! )

attention : Ctrl a ne marche que sur "Feuille1", en colonne H, et si le n° ligne est supérieur à 4 : 5 ou plus ; donc tu dois bien choisir la cellule active avant de faire Ctrl a, sinon la macro ne s'exécutera pas : ça fera rien du tout ! de plus, n'oublie pas que c'est les infos de la ligne de la cellule active qui vont être archivées !​

soan
 

Pièces jointes

  • Test2.zip
    173.8 KB · Affichages: 2
Dernière édition:

Kamalo

XLDnaute Nouveau
Merci Soan pour la réponse!
ce que tu m'as propose c'est genial! sauf que j'ai trouvé une autre méthode, je vais faire appel macro archive avec dans le bouton enregistrer que j'ai déjà cree sauf que si je clique 5 fois sur bouton enregistrer le code me donne 5 copies avec même date ce que je n'ai pas aimé ai tu une solution? peut on mettre une condition de date si la mete date de jour on replace le tableau! le code que je t'est parle est en bas;

Sub Archive()

Application.ScreenUpdating = False
Dim Derlig&
Dim Premlig&

Derlig = Worksheets("Tableau CHauffeur").Range("B" & Rows.Count).End(xlUp).Row
Premlig = Worksheets("Archive").Range("B" & Rows.Count).End(xlUp).Row + 1

If Worksheets("Tableau CHauffeur").[B1] = Sheets("Archive").Range("A" & Premlig - 1) Then Exit Sub

Sheets("Tableau CHauffeur").Range("B5:H" & Derlig).Copy
Sheets("Archive").Range("B" & Premlig).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False



With Sheets("Archive")
.Range("B" & Premlig).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Derlig = .Range("B" & Rows.Count).End(xlUp).Row
.Range("A" & Premlig).Application.CutCopyMode = False
.Select
.Range("A" & Premlig).Select
.Range("A" & Premlig).FormulaLocal = Date
.Range("A" & Premlig).AutoFill Destination:=.Range("A" & Premlig & ":A" & Derlig), Type:=xlFillCopy
End With

Sheets("Tableau CHauffeur").Select

Application.ScreenUpdating = True
End Sub

Merci d avance!
 

soan

XLDnaute Barbatruc
Inactif
@Kamalo

je te suggère de renommer ta feuille "Tableau CHauffeur" en "Chauffeurs" ; c'est plus simple, et c'est au pluriel car y'a plusieurs chauffeurs ; essaye ce code VBA non testé et à adapter à ton fichier réel :​

VB:
Sub Archive()
  If ActiveSheet.Name <> "Chauffeurs" Then Exit Sub
  Dim Derlig&, Premlig&: Application.ScreenUpdating = False
  With Worksheets("Archive")
    Derlig = Range("B" & Rows.Count).End(xlUp).Row
    Premlig = .Range("B" & Rows.Count).End(xlUp).Row + 1
    If [B1] = .Range("A" & Premlig - 1) Then Exit Sub
    Range("B5:H" & Derlig).Copy: .Range("B" & Premlig).PasteSpecial xlPasteValues
    Application.CutCopyMode = False: Derlig = Premlig + 1: .Select
  End With
  With Range("A" & Premlig)
    .Value = Date
    .AutoFill Destination:=.Range("A" & Premlig & ":A" & Derlig), Type:=xlFillCopy
  End With
  Worksheets("Chauffeurs").Select: Application.ScreenUpdating = True
End Sub

attention : le problème des 5 dates n'est pas réglé ; juste une piste : ça m'a l'air d'être l'instruction AutoFill, et il me semble bien qu'il faut au moins 2 dates différentes pour que l'incrémentation se fasse.​

soan
 

soan

XLDnaute Barbatruc
Inactif
@Kamalo

rectification : pour AutoFill, ça marche même si y'a au départ qu'une seule date ; exemple : sur une feuille vierge, en B2:B10, met le format de nombre personnalisé jj/mm/aaaa ; puis saisis une date en B2 : 7/407/04/2021 ; ensuite, exécute cette sub :​

VB:
Sub Essai()
  [B2].AutoFill [B2:B10], 4
End Sub
ça remplit B2:B10 à partir du 07/04/2021, jusqu'au 15/04/2021, avec un incrément de 1 jour.

le 2ème argument 4 est la constante numérique de xlFillValues.

soan
 

soan

XLDnaute Barbatruc
Inactif
@Kamalo

pour la sub Essai() de mon post #28, c'est juste un exemple indépendant de ton exo, juste pour que tu essayes AutoFill ; tu peux donc faire l'essai dans un nouveau classeur.

pour la sub Archive() du post #27 qui n'a pas marché, difficile de le faire sans ton nouveau fichier (celui avec tes feuilles renommées) ; ce fichier doit contenir le code VBA de ton post #26 ; met quelques données, et met aussi un exemple du résultat attendu.​



si j'ai bien compris, tu veux que la sub Archive() copie la dernière ligne de la feuille "Chauffeurs" sur la feuille "Archive", juste sous la dernière ligne utilisée ; mais si c'est une copie d'une seule ligne, je vois pas bien comment faire ton AutoFill de plusieurs lignes : est-ce que ça ne devrait pas être une seule date pour la seule ligne qui a été copiée ? ou tu veux copier plusieurs lignes d'un coup et mettre plusieurs dates pour ces lignes copiées ?​

soan
 
Dernière édition:

Discussions similaires

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