VBA récupérer une partie du contenu cellule
Résolu/Fermé
Clark...kent
Messages postés
44
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 44 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 1 mars 2020 - 6 juin 2012 à 13:54
Clark...kent Messages postés 44 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 1 mars 2020 - 6 juin 2012 à 13:54
A voir également:
- Récupérer valeur cellule vba
- Recuperer message whatsapp supprimé - Guide
- Recuperer video youtube - Guide
- Comment récupérer un compte facebook piraté - Guide
- Excel compter cellule couleur sans vba - Guide
- Excel cellule couleur si condition texte - Guide
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
Modifié par Morgothal le 1/06/2012 à 11:42
Salut,
Pourquoi utiliser du VBA ? Excel peut le faire dynamiquement et simplement :
En D :
Pourquoi utiliser du VBA ? Excel peut le faire dynamiquement et simplement :
En D :
=GAUCHE(DROITE(A1;18);10)En E :
=DROITE(A1;4)A+
Clark...kent
Messages postés
44
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
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.
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.
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 243
Modifié par eriiic le 1/06/2012 à 14:42
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
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
Clark...kent
Messages postés
44
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
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 :)
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 :)
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 243
Modifié par eriiic le 1/06/2012 à 17:04
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
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
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 243
1 juin 2012 à 17:14
1 juin 2012 à 17:14
Bon, j'ai fait sans toi, en partant de la fin de chaine ça devrait être bon.
Tu mets le format date/heure que tu veux en D1 et E1
eric
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
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. ;)
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. ;)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 ;)
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 ;)
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 243
5 juin 2012 à 11:09
5 juin 2012 à 11:09
Bonjour,
c'est une question ou c'est pour dire que tout est ok ?
eric
c'est une question ou c'est pour dire que tout est ok ?
eric
Clark...kent
Messages postés
44
Date d'inscription
mardi 25 mars 2008
Statut
Membre
Dernière intervention
1 mars 2020
2
5 juin 2012 à 12:21
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
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 243
5 juin 2012 à 14:54
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
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
Clark...kent
Messages postés
44
Date d'inscription
mardi 25 mars 2008
Statut
Membre
Dernière intervention
1 mars 2020
2
6 juin 2012 à 09:56
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.
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.
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 243
6 juin 2012 à 10:43
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 "à" ?
eric
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