Menu

Récupération de l'année d'une cellule au format "yy" et concaténation

Messages postés
12
Date d'inscription
lundi 14 janvier 2019
Dernière intervention
17 janvier 2019
- - Dernière réponse : DESTIN8TE
Messages postés
12
Date d'inscription
lundi 14 janvier 2019
Dernière intervention
17 janvier 2019
- 17 janv. 2019 à 15:00
Bonjour,

Désolé s'il y a un double post mais je n'ai pas arrêté de faire des recherches et pas moyen d'avoir une réponse clair et fonctionnelle.

Dans la première cellule d'un tableau je récupère la date actuelle avec NOW() au format d/m/yy h:nn,
dans la deuxième cellule, à l'heure actuelle, il s'agit d'un numéro qui est incrémenté,
maintenant je voudrais que dans la deuxième cellule, je récupère l'année au format "yy" de la première cellule en concaténant ce numéro.

Comme je ne connais pas trop le VBA, au tout début j'avais réussi à récupérer l'année au format "yy" et maintenant plus moyen de l'avoir dû au fait que j'ai modifié le code plusieurs fois pour essayer de concaténer ce numéro.
En clair je veux que se soit comme ceci :
19 - 2345

Voici un bout de code de ce que j'avais déjà fait (au passage le fichier excel est de quelqu'un d'autre)
Le texte en gras est le code que j'ai ajouté.

' Incrémente le n° du POST-IT puis Copie Colle la valeur
Range("C9").Select

Annee = "=Year(B9)"
Annee_formater = Format(Annee, "yy")
ActiveCell.Value = Annee_formater

'ActiveCell.FormulaR1C1 = "=R[1]C+1"
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

Avec ce code je récupère toujours l'année au format "yyyy" alors que j'indique bien "yy" alors que j'ai déjà récupéré ce format.

Pour information, c'est un fichier qui est utilisé tout les jours toute l'année, ensuite un nouveau est créé mais ça ce n'est pas important.

Voilà ça parait bête mais pas moyen de trouver "les" solutions.
Et le pire c'est que comme je viens de commencer le VBA, j'ai du mal à m'en sortir avec les méthodes parce que des fois il faut les écrire comme ça :
...= "=Year(B9)" ou ...= Year("B9")

Alors est-ce que je suis pas futé ou alors il y a une cou**** dans le paté car des fois l'un marche et l'autre non et vice - versa et j'en pète des plombs.

Merci de vos réponses
Afficher la suite 

Votre réponse

5 réponses

Messages postés
23309
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
18 janvier 2019
5548
0
Merci
Bonjour
si vous placez dans la cellule =YEAR(cell date), ça fonctionne sans VBA un fois la date entrée
crtdlmnt
DESTIN8TE
Messages postés
12
Date d'inscription
lundi 14 janvier 2019
Dernière intervention
17 janvier 2019
-
Merci mais je veux obligatoirement passer en VBA car j'utilise un bouton qui est affecté à une macro qui insert une ligne.
Commenter la réponse de Vaucluse
Messages postés
10132
Date d'inscription
mercredi 16 janvier 2013
Dernière intervention
17 janvier 2019
1268
0
Merci
Bonjour

1) les "" sont superflus
2) Format modifie le format d'affichage mais pas le nombre récupéré qui est toujours à 4 chiffres
3) Si les années sont toutes postérieures à 2000 il suffit de soustraire 2000 pour avoir un nombre à 2 chiffres
Annee=Year(B9)-2000
Sinon on prend les 2 derniers chiffres avec :
Annee=Right(Year(B9),2)

Cdlmnt
Via
michel_m
Messages postés
15610
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
17 janvier 2019
3576 -
Et où avais tu indiqué qu'il s' agissait de plusieurs lignes ?

pas très sérieux....


le *2 indique la délibération d'un mot de 2 lettres
DESTIN8TE
Messages postés
12
Date d'inscription
lundi 14 janvier 2019
Dernière intervention
17 janvier 2019
-
Il y a quelque indice mais pas de message clair, désolé ^^

Désolé je ne comprend toujours pas.
michel_m
Messages postés
15610
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
17 janvier 2019
3576 -
pourtant
ça a marché pour la première ligne mais la suivante je n'ai rien à l'intérieur.

réponse
Et où avais tu indiqué qu'il s' agissait de plusieurs lignes ?

retour
Il y a quelque indice...

Ah bon! où ça ?



bon, je ne vais pas continuer à perdre mon temps!

Abandon
DESTIN8TE
Messages postés
12
Date d'inscription
lundi 14 janvier 2019
Dernière intervention
17 janvier 2019
-
Pour information, c'est un fichier qui est utilisé tout les jours toute l'année, ensuite un nouveau est créé mais ça ce n'est pas important.
DESTIN8TE
Messages postés
12
Date d'inscription
lundi 14 janvier 2019
Dernière intervention
17 janvier 2019
-
Après si tu n'es pas futé c'est pas de ma faute. Mais bon je ne vais pas continuer à perdre mon temps avec toi.
Commenter la réponse de via55
Messages postés
12
Date d'inscription
lundi 14 janvier 2019
Dernière intervention
17 janvier 2019
0
Merci
Ah excellent la communauté. Le jour où je créé mon compte, ça va j'aime bien.
Commenter la réponse de DESTIN8TE
Messages postés
24064
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 janvier 2019
2140
0
Merci
Bonjour,

Peux tu nous poster un exemple de ton fichier ?
Ou au moins nous poster le code complet de ta macro... qu'on voit comment tu as inséré le code dedans...

Car, si tu as plusieurs lignes à traiter.. il faut, bien entendu, adapter le code que Michel t'a donné...

DESTIN8TE
Messages postés
12
Date d'inscription
lundi 14 janvier 2019
Dernière intervention
17 janvier 2019
-
Et moi du coup je voudrais récupérer l'année de la cellule de gauche pour la mettre sur celle de droite en le concaténant avec le N° du Post - It ce qui ferait : "19 - 4696" (Le " - " s'agit d'un tiret et non d'une soustraction) et je ne veux pas utiliser cette méthode : "Annee=Year(B9)-2000" car je trouve que c'est de la mauvaise pratique en terme d'automatisation car si on passe en l'an 3000 on sera obliger de modifier le code, bon on a de la marge en terme d'année pour le modifier ^^ mais je préfére éviter ce genre de méthode.
DESTIN8TE
Messages postés
12
Date d'inscription
lundi 14 janvier 2019
Dernière intervention
17 janvier 2019
-
Après je ne peux pas trop vous donner d'information sur ce fichier car il s'agit d'un fichier confidentiel, seulement les informations que je vous ai donné qui sont sans importance pour le monde extérieur.
Commenter la réponse de jordane45
Messages postés
12
Date d'inscription
lundi 14 janvier 2019
Dernière intervention
17 janvier 2019
-1
Merci
Bonjour,

Oui le voici ( En gras c'est ce que j'ai ajouté au code) :

Sub Insertion()

On Error Resume Next
ActiveSheet.ShowAllData

' Supprime les filtres

Range("B8:W8").Select
Selection.AutoFilter

' Selectionne la ligne 9, insère une ligne, copie les valeurs puis l'efface
Rows("9:9").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("B10:AD10").Select
Selection.AutoFill Destination:=Range("B9:AD10"), Type:=xlFillDefault
Range("B9:AD10").Select
Rows("9:9").Select
Range("L9").Activate
Rows("9:9").EntireRow.AutoFit
Range("B9:W9").Select
Selection.ClearContents
Range("C9").Select

' Copie de la date du jour en B9
Range("B9").Select
ActiveCell.FormulaR1C1 = "=NOW()"
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

' Incrémente le n° du POST-IT puis Copie Colle la valeur
Range("C9").Select

Annee = "=Year(B9)"
Annee_formater = Format(Annee, "yy")
ActiveCell.Value = Annee_formater

'ActiveCell.FormulaR1C1 = "=R[1]C+1"
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

' Mise en forme : Hauteur de ligne
Rows("9:9").Select
Rows("9:9").EntireRow.AutoFit

' Ajoute les filtres
Range("B8:W8").Select
Selection.AutoFilter
Range("B8").Select
ActiveWorkbook.Worksheets("DATA").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("DATA").AutoFilter.Sort.SortFields.Add Key:=Range( _
"B8"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("DATA").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("C9").Select

End Sub

Voici le résultat de la macro sans ma modification.

En sachant que le N° du Post It signifie le n-ième Post-It, donc comme sur le screen, le dernier est le 4695ième Post It.
Commenter la réponse de DESTIN8TE
Gintama (2015) (51) | Prince of Stride: Alternative | Ugreen (43)