Excel rajout de date
Résolu
frisoa
Messages postés
40
Date d'inscription
Statut
Membre
Dernière intervention
-
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour tout le monde,
j'ai un petit problème sous excel. j'ai un fichier de ce type :
Date Methode CodeSecteur Stratégie Espece Type Sexe Lf Pds
14/11/1984 PD Cerisel Mont1984 trm adulte 475 123
22/11/1984 PD Cerisel Mont1984 trf adulte f 230
22/11/1984 PD Cerisel Mont1984 trf adulte m 240
15/12/1984 PD Cerisel Mont1984 trf adulte f 372 34
16/12/1984 PD Cerisel Mont1984 trf adulte m 363
17/12/1984 PD Cerisel Mont1984 trf adulte f 340
18/12/1984 PD Cerisel Mont1984 trf adulte f 268 23
18/12/1984 PD Cerisel Mont1984 trm adulte f 315
18/12/1984 PD Cerisel Mont1984 trm adulte f 360
19/12/1984 PD Cerisel Mont1984 trf adulte f 225
19/12/1984 PD Cerisel Mont1984 trm adulte f 325
Au fait j'aurai souhaité rajouter les dates manquantes avec seulement les colonnes méthode, code secteur et stratégie qui seront renseignées avec respectivement PD, Cerisel, Montxxxx (xxxx=année en cours) et les autres colonnes devront restées vides (une petite précision qui a sont importance, il existe d'autres colonnes après la colonnes Pds qui devront également restées vides)
Cela est-il possbile?
Merci d'avance pour votre aide.
A bientôt et bonne journée.
j'ai un petit problème sous excel. j'ai un fichier de ce type :
Date Methode CodeSecteur Stratégie Espece Type Sexe Lf Pds
14/11/1984 PD Cerisel Mont1984 trm adulte 475 123
22/11/1984 PD Cerisel Mont1984 trf adulte f 230
22/11/1984 PD Cerisel Mont1984 trf adulte m 240
15/12/1984 PD Cerisel Mont1984 trf adulte f 372 34
16/12/1984 PD Cerisel Mont1984 trf adulte m 363
17/12/1984 PD Cerisel Mont1984 trf adulte f 340
18/12/1984 PD Cerisel Mont1984 trf adulte f 268 23
18/12/1984 PD Cerisel Mont1984 trm adulte f 315
18/12/1984 PD Cerisel Mont1984 trm adulte f 360
19/12/1984 PD Cerisel Mont1984 trf adulte f 225
19/12/1984 PD Cerisel Mont1984 trm adulte f 325
Au fait j'aurai souhaité rajouter les dates manquantes avec seulement les colonnes méthode, code secteur et stratégie qui seront renseignées avec respectivement PD, Cerisel, Montxxxx (xxxx=année en cours) et les autres colonnes devront restées vides (une petite précision qui a sont importance, il existe d'autres colonnes après la colonnes Pds qui devront également restées vides)
Cela est-il possbile?
Merci d'avance pour votre aide.
A bientôt et bonne journée.
A voir également:
- Excel rajout de date
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Nombre de jours entre deux dates excel - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
13 réponses
Bonjour,
Euh... perso, je n'ai rien compris !
Peux tu être plus explicite et joindre un petit exemple (http://cjoint.com).
m@rina
Euh... perso, je n'ai rien compris !
Peux tu être plus explicite et joindre un petit exemple (http://cjoint.com).
m@rina
désolé si je n'est pas été très clair,
un exemple sera plus parlant, voici le lien du fichier https://www.cjoint.com/?geoKC4fFhH
un exemple sera plus parlant, voici le lien du fichier https://www.cjoint.com/?geoKC4fFhH
bonjour frisoa
Marin@ doit faire encore la sieste ;o)... pardon! M@rina
ci joint proposition
https://www.cjoint.com/?geqmKP6cIl
mais ce qu'il y a de curieux, c'est que tu as plusieurs fois la même date dans "ce que j'ai" et dans "ce que je voudrais" il n'y a plus qu'une seule date
si il faut conserver ces "plusieurs dates" le pb est hachement + compliqué
Marin@ doit faire encore la sieste ;o)... pardon! M@rina
ci joint proposition
https://www.cjoint.com/?geqmKP6cIl
mais ce qu'il y a de curieux, c'est que tu as plusieurs fois la même date dans "ce que j'ai" et dans "ce que je voudrais" il n'y a plus qu'une seule date
si il faut conserver ces "plusieurs dates" le pb est hachement + compliqué
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bah justement il faut conserver ces plusieurs dates, puisqu'à chacune des lignes correspond les caractéristiques d'un seul et même individu.
j'imagine que ça ne peut pas se faire simplement....il va falloir passer par virtual basic?
j'imagine que ça ne peut pas se faire simplement....il va falloir passer par virtual basic?
Bonsoir tout le monde,
bon, comme je vois que michel s'est laissé tenté par une sieste avec m@rina voici une proposition :
frisoa.xls
chuuuuut....
eric
bon, comme je vois que michel s'est laissé tenté par une sieste avec m@rina voici une proposition :
frisoa.xls
chuuuuut....
eric
Bonjour Éric,
ça marche super sur l'exemple mais dès que j'essaie de l'appliquer sur la totalité du fichier ça ne marche plus.
Pourrais tu m'expliquer la démarche ou à moins que ça ne te dérange pas de le faire voici le fichier complet http://www.cijoint.fr/cjlink.php?file=cj200906/cijmr8sFQu.zip
Si ce n'est pas trop compliqué j'aimerais bien savoir comme cela fonctionne que je puisse le refaire sur d'autres fichiers par la suite (ce qui me sera bien utile)
Merci encore
ça marche super sur l'exemple mais dès que j'essaie de l'appliquer sur la totalité du fichier ça ne marche plus.
Pourrais tu m'expliquer la démarche ou à moins que ça ne te dérange pas de le faire voici le fichier complet http://www.cijoint.fr/cjlink.php?file=cj200906/cijmr8sFQu.zip
Si ce n'est pas trop compliqué j'aimerais bien savoir comme cela fonctionne que je puisse le refaire sur d'autres fichiers par la suite (ce qui me sera bien utile)
Merci encore
Bonjour,
Bien sûr que ça ne marche pas, tu demandes pour un fichier avec les dates en B et tu veux traiter un fichier avec les dates en C, et le champs heure a disparu...
Là je n'ai pas trop le temps de modifier, pendant ce temps réfléchi bien quel sera ton format de fichier et s'il est bien unique (position des champs)
Difficile de t'expliquer VBA en 10 lignes.
Pour commencer clic-droit sur le nom d'un onglet du fichier que je t'ai fourni, 'visualiser le code', puis double-clic sur 'module1' pour visualiser le code. Si tu as qcq notions de programmation tu trouveras peut-être oèu il faut agir.
eric
Bien sûr que ça ne marche pas, tu demandes pour un fichier avec les dates en B et tu veux traiter un fichier avec les dates en C, et le champs heure a disparu...
Là je n'ai pas trop le temps de modifier, pendant ce temps réfléchi bien quel sera ton format de fichier et s'il est bien unique (position des champs)
Difficile de t'expliquer VBA en 10 lignes.
Pour commencer clic-droit sur le nom d'un onglet du fichier que je t'ai fourni, 'visualiser le code', puis double-clic sur 'module1' pour visualiser le code. Si tu as qcq notions de programmation tu trouveras peut-être oèu il faut agir.
eric
désolé Eric de n'avoir pas fourni le bon doc des le début.
concernant le format du fichier justement je ne suis pas sur qu'ils seront tous de la meme forme, c'est pourquoi je te demandais si il était possible que tu m'expliques un peu le script.
je me pencherais sur le code mardi ou mercredi.
en tout cas merci infiniment pour ton aide
a bientot et bon week end
concernant le format du fichier justement je ne suis pas sur qu'ils seront tous de la meme forme, c'est pourquoi je te demandais si il était possible que tu m'expliques un peu le script.
je me pencherais sur le code mardi ou mercredi.
en tout cas merci infiniment pour ton aide
a bientot et bon week end
Bonjour,
voici la macro modifiée : frisoa.xls
Les noms des champs sont recherchés sur la ligne 1 et peuvent être en n'importe quelle position, leur libellé doit être exact, accents compris.
J'ai commenté un peu le code et ajouté une gestion d'erreur (champ recherché absent ou feuille trop petite)
Comme tes données sont nombreuses tu peux suivre l'évolution du traitement dans la barre d'état en bas de la fenetre excel.
eric
voici la macro modifiée : frisoa.xls
Les noms des champs sont recherchés sur la ligne 1 et peuvent être en n'importe quelle position, leur libellé doit être exact, accents compris.
J'ai commenté un peu le code et ajouté une gestion d'erreur (champ recherché absent ou feuille trop petite)
Comme tes données sont nombreuses tu peux suivre l'évolution du traitement dans la barre d'état en bas de la fenetre excel.
Sub completerDates() ' raccourci clavier: ctrl+d ' ' la macro traite la feuille active ' la feuille sera triée par date ' pour chaque date manquante 1 ligne est insérée ' et les champs listés dans nomsChamps dupliqués. ' Dim i As Long, j As Long, lig As Long, nbLig As Long, nbAjout As Long, derCol As Long Dim libelErreur As String ' changer la dimension de posChamps si le nombre de champs à dupliquer change ' et mettre à jour la liste des libellés des champs Dim nomsChamps(), posChamps(4) As Long ' liste des libellés des champs, champ Date obligatoire et toujours en 1er nomsChamps = Array("Date", "Methode", "CodeSecteur", "Stratégie") ' 1er champ: Date, autres champs: champs à récupérer ' ' Application.ScreenUpdating = False ' ne pas rafraichir l'écran ' recup positions champs libelErreur = "champ " & nomsChamps(i) & " non trouvé." For i = 0 To UBound(nomsChamps) On Error GoTo erreur posChamps(i) = Application.Match(nomsChamps(i), [1:1], 0) On Error GoTo 0 Next i ' trier par date derCol = [A1].Offset(1, Cells.Columns.Count - 1).End(xlToLeft).Column Columns("A:A").Resize(, derCol).Sort Key1:=Range("C2"), Order1:=xlAscending, _ Header:=xlGuess, OrderCustom:=1, Orientation:=xlTopToBottom ' ' pour chaque cellule colonne Date en partant de la dernière cellule remplie nbLig = [A1].Offset(Cells.Rows.Count - 1, posChamps(0) - 1).End(xlUp).Row For lig = nbLig To 3 Step -1 If Cells(lig, posChamps(0)) > Cells(lig - 1, posChamps(0)) + 1 Then 'si delta date > 1 alors nbAjout = nbAjout + 1 If nbLig + nbAjout > Cells.Rows.Count Then ' si feuille trop petite libelErreur = "Trop de lignes ajoutées." GoTo erreur Else ' sinon Application.StatusBar = "Ligne en cours de traitement : " & lig & " ( " & nbAjout & " lignes ajoutées)" Rows(lig).Insert Shift:=xlDown ' insérer 1 ligne au dessus Cells(lig, posChamps(0)).Value = Cells(lig + 1, posChamps(0)).Value - 1 ' mettre date-1 For j = 1 To UBound(posChamps) - 1 ' inscrire les champs à récupérer Cells(lig, posChamps(j)).Value = Cells(lig - 1, posChamps(j)).Value Next j ' champ suivant lig = lig + 1 End If End If Next lig ' ligne suivante ' retablir barre d'état et rafraichissement écran Application.StatusBar = "" Application.ScreenUpdating = True MsgBox (nbAjout & " lignes ajoutées") Exit Sub erreur: j = MsgBox(libelErreur, vbCritical + vbRetryCancel) Application.StatusBar = "" Application.ScreenUpdating = True End Sub
eric
Bonjour Eric,
Désolé de ne pas avoir répondu avant, j'étais en réunion tout le début de semaine.
Le fichier que tu m'as posté est l'exemple que j'avais mis au début, le fichier complet se trouve ici. http://www.cijoint.fr/cjlink.php?file=cj200906/cijmr8sFQu.zip
Quand j'applique le code que tu m'as envoyé sur les données complètes cela duplique la première colonne sur l'ensemble de la feuille...et vu que j'ai un peu de mal à comprendre le code VBA malgré tes explications claires je n'ai pas réussi à résoudre le problème.
peux tu m'eclairer?
En tout cas il va vraiment falloir que je m'attèle rapidement à VBA pour résoudre ce type de problème tout seul...connais tu des cours en ligne gratuits?
Désolé de ne pas avoir répondu avant, j'étais en réunion tout le début de semaine.
Le fichier que tu m'as posté est l'exemple que j'avais mis au début, le fichier complet se trouve ici. http://www.cijoint.fr/cjlink.php?file=cj200906/cijmr8sFQu.zip
Quand j'applique le code que tu m'as envoyé sur les données complètes cela duplique la première colonne sur l'ensemble de la feuille...et vu que j'ai un peu de mal à comprendre le code VBA malgré tes explications claires je n'ai pas réussi à résoudre le problème.
peux tu m'eclairer?
En tout cas il va vraiment falloir que je m'attèle rapidement à VBA pour résoudre ce type de problème tout seul...connais tu des cours en ligne gratuits?
Bonjour,
Le dernier fichier que je t'ai fourni contient la macro mais c'est vrai que j'ai été avare d'explications.
J'ai pensé que tu aurais à relancer cette macro régulièrement et peut-être sur différents classeurs.
Donc ce fichier tu l'enregistres sous un nom plus parlant, par exemple TraitementDate.xls, tu peux nettoyer les feuilles, en supprimer et mettre un petit modop si tu veux que ce soit plus propre.
Tu l'ouvres, tu ouvres le classeur que tu veux traiter et tu sélectionnes la feuille à traiter puis Ctrl+d et tu vas te faire un café...
Tu peux suivre l'évolution du traitement en bas de la fenetre et voir que ça tourne bien.
L'insertion de lignes est très gourmand en temps machine et le 1er traitement est très long (ensuite comme il y aura peu de dates à ajouter ça sera bcp plus rapide).
J'ai retesté et à-priori ça marche (de ce que j'ai compris que tu voulais en tout cas).
Si il y a un écart me dire précisément ce qui cloche, avec un bout de fichier traité et en rouge les anomalies et explications.
Je ne me suis pas occupé de la renumérotation car ça me paraissait bizarre de perdre une référence...
Et peut-être une anomalie dans tes données, regarde 'piege monté' en S6
Si ton numpit est de la forme xxxxExx excel le considère comme un nombre au format scientifique et te le transforme. Il faut absolument mettre cette colonne S au format 'texte' avant les saisies.
Pour détecter ces erreurs potentielles insère une colonne après S et en T2 saisis :
=SI(CHERCHE("+";S2)<NBCAR(S2);"à contrôler")
à recopier vers le bas
Ensuite un filtre automatique sur cette colonne te listera les anomalies à ressaisir
eric
Le dernier fichier que je t'ai fourni contient la macro mais c'est vrai que j'ai été avare d'explications.
J'ai pensé que tu aurais à relancer cette macro régulièrement et peut-être sur différents classeurs.
Donc ce fichier tu l'enregistres sous un nom plus parlant, par exemple TraitementDate.xls, tu peux nettoyer les feuilles, en supprimer et mettre un petit modop si tu veux que ce soit plus propre.
Tu l'ouvres, tu ouvres le classeur que tu veux traiter et tu sélectionnes la feuille à traiter puis Ctrl+d et tu vas te faire un café...
Tu peux suivre l'évolution du traitement en bas de la fenetre et voir que ça tourne bien.
L'insertion de lignes est très gourmand en temps machine et le 1er traitement est très long (ensuite comme il y aura peu de dates à ajouter ça sera bcp plus rapide).
J'ai retesté et à-priori ça marche (de ce que j'ai compris que tu voulais en tout cas).
Si il y a un écart me dire précisément ce qui cloche, avec un bout de fichier traité et en rouge les anomalies et explications.
Je ne me suis pas occupé de la renumérotation car ça me paraissait bizarre de perdre une référence...
Et peut-être une anomalie dans tes données, regarde 'piege monté' en S6
Si ton numpit est de la forme xxxxExx excel le considère comme un nombre au format scientifique et te le transforme. Il faut absolument mettre cette colonne S au format 'texte' avant les saisies.
Pour détecter ces erreurs potentielles insère une colonne après S et en T2 saisis :
=SI(CHERCHE("+";S2)<NBCAR(S2);"à contrôler")
à recopier vers le bas
Ensuite un filtre automatique sur cette colonne te listera les anomalies à ressaisir
eric