VBA récupérer une partie du contenu cellule

Résolu/Fermé
Clark...kent Messages postés 43 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 1 mars 2020 - 1 juin 2012 à 11:11
Clark...kent Messages postés 43 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 1 mars 2020 - 6 juin 2012 à 13:54
Bonjour à tous,

J'ai une cellule contenant cette donnée

Créé par Chuck Norris le 24/12/0000 à 00:00

Est il possible de récupérer dans deux colonnes distinctes
la date (colonne D) et l'heure en question. (colonne E)


merci à tous




5 réponses

Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
Modifié par Morgothal le 1/06/2012 à 11:42
Salut,
Pourquoi utiliser du VBA ? Excel peut le faire dynamiquement et simplement :
En D :
=GAUCHE(DROITE(A1;18);10)
En E :
=DROITE(A1;4)
A+
1
Clark...kent Messages postés 43 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 1 mars 2020 2
Modifié par Clark...kent le 1/06/2012 à 12:09
Pourquoi en VBA? Parce que les rapports sont à charger toutes les quinzaines dans un fichier unique. Je vais chercher cette date et cette heure qui vient se greffer sur un autre classeur (400 colonnes tous les 15 jours).
SI j'inscris cette formule manuellement, le fichier sera trop volumineux

J'ai essayé Range("A1")= Left(Right(A1;18);10) mais ca ne passe pas.

Et je me rend compte que j'ai oublié un détail important

Le soucis est que d'un rapport à un autre, je ne sais pas ou sera inscrit cette donnée. Je sais simplement qu'elle sera en colonne A mais pas quelle cellule précisément.

Mais en tout ta formule fonction très bien malgré tout

Merci de ton aide.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 209
Modifié par eriiic le 1/06/2012 à 14:42
Bonjour,

Je sais simplement qu'elle sera en colonne A mais pas quelle cellule précisément.

Et quelle est la caractéristique unique qui permet de l'identifier ?
Elle est la seule à contenir Chuck Norris ?

eric
0
Clark...kent Messages postés 43 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 1 mars 2020 2
Modifié par Clark...kent le 1/06/2012 à 15:22
Bonjour eriiic,

Elle sera la seule dont le contenu débute par :
"Généré par :" (et non pas "Créé par :")

le nom, la date ou l'heure peuvent être différent sur chaque rapport.
Mais effectivement si la seule contient Généré par : Chuck Norris
Elle sera la seule à contenir cela.

Petite blague à part : Le nom ne pourra être que Chuck Norris, car si tu sais le faire, Chuck Norris le fait mieux :)
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 209
Modifié par eriiic le 1/06/2012 à 17:04
Et de toute façon il n'a pas à s'inscrire, il est déjà dans toutes les cellules de tous les tableaux existants ;-)

Et il n'y toujours que nom et prénom sans possibilité que ce soit sur 3 mots ?
Ou bien " le ", juste devant la date, sera la seule fois où on risque de rencontrer cette chaine dans la cellule trouvée ?
Et le format de date est bien jj/mm/aaa ?

eric
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 209
1 juin 2012 à 17:14
Bon, j'ai fait sans toi, en partant de la fin de chaine ça devrait être bon.
Sub test()
    Dim c As Range, ch() As String
    Set c = [A:A].Find("Généré par :", LookIn:=xlValues)
    If c Is Nothing Then
        MsgBox ("Date non trouvée")
    Else
        ch = Split(c.Value, " ")
        [D1] = CDate(ch(UBound(ch) - 2))
        [E1] = CDate(ch(UBound(ch)))
    End If
End Sub


Tu mets le format date/heure que tu veux en D1 et E1

eric
0
clark...kent
1 juin 2012 à 20:20
Et il n'y toujours que nom et prénom sans possibilité que ce soit sur 3 mots ?
Si car il se peut qu'un nom soit à particule (cas extrème mais on ne sait jamais)
Sinon oui, il y aura toujours "Généré par : "+"Nom Prenom"+"le "+"XX/XX/XXX"+"à 00:00"
La date je ne suis pas certain qu'elle soit au format date puisque toute l'information ("Générée le : XX/XX/XXX

Je pars en week end et je testerais ca probablement dimanche soir maintenant, merci de ton aide.

Mais avant je demanderais à Chuck Norris si je peux essayer, ou alors il viendra de lui même m'autoriser à essayer.

A moins qu'il refuse que je parte en week end. ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
clark...kent
5 juin 2012 à 11:01
Bonjour désolé pour l'attente j'ai du partir en déplacement d'urgence.

Le code m'affiche :
Il m'affiche (ch(UBound(ch) - 2)=Norris

Je suppose que cette partie est supposée esquivé le nom : ch = Split(c.Value, " ")
Ou je me trompe?


Donc il détecte Chuck Norris plutôt que la date,
ce qui parait normal ;)
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 209
5 juin 2012 à 11:09
Bonjour,

c'est une question ou c'est pour dire que tout est ok ?
eric
0
Clark...kent Messages postés 43 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 1 mars 2020 2
5 juin 2012 à 12:21
Non c'est une question, comme je le dis cela ne fonctionne pas, il me dit qu'il y a une erreur de compatibilité et à la ligne dans vb : Cdate(ch(UBound(ch) - 2)=Norris
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 209
5 juin 2012 à 14:54
Re,

Comme tu t'en doutes j'ai testé avec de poster, peut-être qu'une chaine a une particularité non annoncée.
Dépose un petit fichier exemple avec qcq lignes qui plante.
cjoint.com et collerr ici le lien fourni.

eric
0
Clark...kent Messages postés 43 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 1 mars 2020 2
6 juin 2012 à 09:56
Oui je m'en doute :)
Désolé pour le délai mais je suis débordé en ce moment.

Voici le fichier (envoyé avec l'autorisation de Chuck bien sur)
https://www.cjoint.com/?3Fgj4yxNxGa

Merci de ton aide.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 209
6 juin 2012 à 10:43
Bonjour,

Ca marcherait mieux si tu avais filé les bonnes infos.
il y aura toujours "Généré par : "+"Nom Prenom"+"le "+"XX/XX/XXX"+"à 00:00"
Tu le vois où le "à" ?
Sub test()
    Dim c As Range, ch() As String
    Set c = [A:A].Find("Généré par :", LookIn:=xlValues)
    If c Is Nothing Then
        MsgBox ("Date non trouvée")
    Else
        ch = Split(c.Value, " ")
        [D1] = CDate(ch(UBound(ch) - 1))
        [E1] = CDate(ch(UBound(ch)))
    End If
End Sub

eric
0