Récupération de l'année d'une cellule au format "yy" et concaténation
Résolu/Fermé
DESTIN8TE
Messages postés
35
Date d'inscription
lundi 14 janvier 2019
Statut
Membre
Dernière intervention
15 février 2019
-
14 janv. 2019 à 11:36
DESTIN8TE Messages postés 35 Date d'inscription lundi 14 janvier 2019 Statut Membre Dernière intervention 15 février 2019 - 31 janv. 2019 à 15:09
DESTIN8TE Messages postés 35 Date d'inscription lundi 14 janvier 2019 Statut Membre Dernière intervention 15 février 2019 - 31 janv. 2019 à 15:09
A voir également:
- Récupération de l'année d'une cellule au format "yy" et concaténation
- Format epub - Guide
- Telecharger format factory - Télécharger - Conversion & Codecs
- Format apfs - Guide
- Aller à la ligne dans une cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
7 réponses
yg_be
Messages postés
23436
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 janvier 2025
Ambassadeur
1 559
Modifié le 21 janv. 2019 à 19:56
Modifié le 21 janv. 2019 à 19:56
bonjour,
[B9].Value = Format(Now, "yy") & "-" & [B9].Value
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 421
14 janv. 2019 à 11:39
14 janv. 2019 à 11:39
Bonjour
si vous placez dans la cellule =YEAR(cell date), ça fonctionne sans VBA un fois la date entrée
crtdlmnt
si vous placez dans la cellule =YEAR(cell date), ça fonctionne sans VBA un fois la date entrée
crtdlmnt
DESTIN8TE
Messages postés
35
Date d'inscription
lundi 14 janvier 2019
Statut
Membre
Dernière intervention
15 février 2019
14 janv. 2019 à 12:04
14 janv. 2019 à 12:04
Merci mais je veux obligatoirement passer en VBA car j'utilise un bouton qui est affecté à une macro qui insert une ligne.
via55
Messages postés
14512
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 janvier 2025
2 740
14 janv. 2019 à 11:48
14 janv. 2019 à 11:48
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
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
DESTIN8TE
Messages postés
35
Date d'inscription
lundi 14 janvier 2019
Statut
Membre
Dernière intervention
15 février 2019
14 janv. 2019 à 12:08
14 janv. 2019 à 12:08
Merci mais j'ai essayé les deux méthodes et la première me retourne -101 tant dit que la deuxième 99.
J'en ai marre :'(
J'en ai marre :'(
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
14 janv. 2019 à 12:35
14 janv. 2019 à 12:35
Bonjour tout ce beau monde
Option Explicit
'----------------------------------
Sub xxx()
Dim An As String * 2
An = Format(Range("B9"), "yy")
Range("C9") = An & "-" & Range("C9")
End Sub
DESTIN8TE
Messages postés
35
Date d'inscription
lundi 14 janvier 2019
Statut
Membre
Dernière intervention
15 février 2019
14 janv. 2019 à 13:39
14 janv. 2019 à 13:39
Merci michel_m, ça a marché pour la première ligne mais la suivante je n'ai rien à l'intérieur. Voici un sreen du résultat :
DESTIN8TE
Messages postés
35
Date d'inscription
lundi 14 janvier 2019
Statut
Membre
Dernière intervention
15 février 2019
14 janv. 2019 à 13:39
14 janv. 2019 à 13:39
Ah oui et à quoi sert le "* 2" ?
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
Modifié le 14 janv. 2019 à 14:04
Modifié le 14 janv. 2019 à 14:04
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
pas très sérieux....
le *2 indique la délibération d'un mot de 2 lettres
jordane45
Messages postés
38392
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 janvier 2025
4 731
15 janv. 2019 à 09:43
15 janv. 2019 à 09:43
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é...
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
35
Date d'inscription
lundi 14 janvier 2019
Statut
Membre
Dernière intervention
15 février 2019
17 janv. 2019 à 14:45
17 janv. 2019 à 14:45
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
35
Date d'inscription
lundi 14 janvier 2019
Statut
Membre
Dernière intervention
15 février 2019
17 janv. 2019 à 14:49
17 janv. 2019 à 14:49
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
DESTIN8TE
Messages postés
35
Date d'inscription
lundi 14 janvier 2019
Statut
Membre
Dernière intervention
15 février 2019
31 janv. 2019 à 15:09
31 janv. 2019 à 15:09
Voici la solution finale :
Ps : Le commentaire est de nature personnelle mais je l'ai laissé, on ne sait jamais, s'il peut vous éclaircir.
'' Concatène l'année actuelle avec un n° de POST-IT incrémenté puis Copie Colle la valeur Range("C9").Select If [C10].Value = "" Then ' Si la cellule positionné [C9].Value = Format(Now, "yy") & " - " & [C10].Value + 1 Else Dim num As Integer num = CInt(Mid([C10].Value, 6)) [C9].Value = Format(Now, "yy") + " - " + CStr(num + 1) End If
Ps : Le commentaire est de nature personnelle mais je l'ai laissé, on ne sait jamais, s'il peut vous éclaircir.
DESTIN8TE
Messages postés
35
Date d'inscription
lundi 14 janvier 2019
Statut
Membre
Dernière intervention
15 février 2019
Modifié le 14 janv. 2019 à 19:33
Modifié le 14 janv. 2019 à 19:33
Ah excellent la communauté. Le jour où je créé mon compte, ça va j'aime bien.
DESTIN8TE
Messages postés
35
Date d'inscription
lundi 14 janvier 2019
Statut
Membre
Dernière intervention
15 février 2019
17 janv. 2019 à 14:35
17 janv. 2019 à 14:35
Bonjour,
Oui le voici ( En gras c'est ce que j'ai ajouté au code) :
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.
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.
22 janv. 2019 à 08:27
Je pense que c'est le tiret qui est la cause de tout ça car il transforme le type de données de la cellule en chaîne de caractère.
Modifié le 22 janv. 2019 à 09:40
le code fourni est prévu pour la ligne 9.
22 janv. 2019 à 15:30
Question 1 : Mid =() renvoit une chaîne, un entier ou il s'adapte en fonction du type de données manipulé ?
Question 2 : Si dans le résultat final on met un tiret, est-ce que la valeur de la cellule passe obligatoirement en chaîne de caractère ?
22 janv. 2019 à 16:32
comment un tiret pourrait-il représenter un nombre plutôt qu'une chaîne? tu n'as pas expliqué ce que tu voulais obtenir: un nombre affiché comme une chaîne? je pense que tu confonds le contenu de la cellule et l'affichage de ce contenu.
Modifié le 23 janv. 2019 à 08:14
Bin oui c'est un peu bête comme question mais jai préféré la posé.
C'est là le problème c'est que techniquement, exemple 19 - 2674, est une chaîne de caractère du coup. Donc dans cette chaîne, je veux juste récupérer le numéro après le tiret mais comme il est en String, j'ai utilisé CInt(num) et c'est au nievau de l'incrémentation qui ne fonctionne pas. Sinon le reste fonctionne. Voici comment j'ai utilisé CInt(num) :
Je m'en mêle surtout les pinceaux.