Plage de données pour fonction Right
Chachoumie
-
Patrice33740 Messages postés 8561 Date d'inscription Statut Membre Dernière intervention -
Patrice33740 Messages postés 8561 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je viens vers vous car j'essaye tant bien que mal de créer une macro sur Excel qui me permettrait d'enlever les 150 premiers caractères de ma plage de cellules.
Mon code rencontre actuellement un problème lors de l'appel de la fonction Right.
Code :
Quelqu'un sait-il d'où vient mon problème ?
Merci d'avance
Je viens vers vous car j'essaye tant bien que mal de créer une macro sur Excel qui me permettrait d'enlever les 150 premiers caractères de ma plage de cellules.
Mon code rencontre actuellement un problème lors de l'appel de la fonction Right.
Code :
Range("C4:C30000").Select For Each C In Selection C.Value = Right(C.Value, Len(C.Value) - 151) Next
Quelqu'un sait-il d'où vient mon problème ?
Merci d'avance
A voir également:
- Plage de données pour fonction Right
- Fuite données maif - Guide
- Fonction si et - Guide
- Supprimer les données de navigation - Guide
- Trier des données excel - Guide
- Service de diffusion de données - Forum TNT / Satellite / Réception
6 réponses
Bonjour Chachoumie, bonjour le forum,
Peut-Être comme ça :
Évite autant que tu le peux les Select inutiles qui ne font que ralentir l'exécution du code...
Peut-Être comme ça :
Sub Macro1() Dim PL As Range Dim C As Range Set PL = Range("C4:C30000") For Each C In PL C.Value = Mid(C.Value, 151) Next End Sub
Évite autant que tu le peux les Select inutiles qui ne font que ralentir l'exécution du code...
Bonjour ThauTheme et merci pour ta réponse !
Je viens d'essayer ton code et je me suis également aperçue que certaines cellules avaient plus de caractères que d'autres.
Existe-t-il une fonction qui permet de récupérer un bout de texte et de supprimer le reste ?
J'avais essayé avec la fonction Replace mais mon texte n'est jamais le même je ne peux donc pas l'utiliser :/
Merci d'avance pour ta réponse
Je viens d'essayer ton code et je me suis également aperçue que certaines cellules avaient plus de caractères que d'autres.
Existe-t-il une fonction qui permet de récupérer un bout de texte et de supprimer le reste ?
J'avais essayé avec la fonction Replace mais mon texte n'est jamais le même je ne peux donc pas l'utiliser :/
Merci d'avance pour ta réponse
Bonjour,
Pour 29997 valeurs il est préférable de passer par un tableau :
Pour 29997 valeurs il est préférable de passer par un tableau :
Option Explicit Sub Test() Dim t As Variant Dim i As Long t = Range("C4:C30000").Formula For i = LBound(t) To UBound(t) t(i, 1) = Mid(t(i, 1), 151) Next Range("C4:C30000").Formula = t End Sub
Re,
Certes Patrice ! Je ne m'étais même pas rendu compte de l'étendue de la plage....
Sinon, Chachoumie, à part la fonction BouleDeCristal qui n'a toujours pas été mise en place dans VBA, je ne vois pas comment on va pouvoir répondre à ton nouveau problème. Si au moins tu fournissais des exemple pour qu'on puisse se faire une idée...
Certes Patrice ! Je ne m'étais même pas rendu compte de l'étendue de la plage....
Sinon, Chachoumie, à part la fonction BouleDeCristal qui n'a toujours pas été mise en place dans VBA, je ne vois pas comment on va pouvoir répondre à ton nouveau problème. Si au moins tu fournissais des exemple pour qu'on puisse se faire une idée...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci beaucoup pour vos réponses,
Pour vous donner un exemple, je récupère les données d'un fichier texte et je les insère dans excel. Dans ma colonne C je vais avoir plusieurs cellules contenant du texte (ex : INFO: User p059311 on FRMH100149(C8-D3-FF-2B-FB-48) updated license-reservation for aquintos PREEvision-7.5.0-FDTDMCP3TAdmin-6-28062016-31129999-1540 (4 of 8))
Ce que j'aimerais réalisé est que lorsque j'ai 4 of 8 d'écrit dans ma cellule alors je remplace tout le texte de ma cellule par 4/8. Et je fais cela pour toutes les cellules de ma colonne.
Le problème est que la fonction replace est longue et je dois faire ça pour chaque données (de 0/8 à 8/8). Je pense qu'il doit exister une fonction vba plus simple qui permettrait de faire cela. J'ai cherché sur plusieurs forums et pour l'instant je n'ai pas trouvé de solutions.
J'espère avoir été claire dans mon message
Pour vous donner un exemple, je récupère les données d'un fichier texte et je les insère dans excel. Dans ma colonne C je vais avoir plusieurs cellules contenant du texte (ex : INFO: User p059311 on FRMH100149(C8-D3-FF-2B-FB-48) updated license-reservation for aquintos PREEvision-7.5.0-FDTDMCP3TAdmin-6-28062016-31129999-1540 (4 of 8))
Ce que j'aimerais réalisé est que lorsque j'ai 4 of 8 d'écrit dans ma cellule alors je remplace tout le texte de ma cellule par 4/8. Et je fais cela pour toutes les cellules de ma colonne.
Le problème est que la fonction replace est longue et je dois faire ça pour chaque données (de 0/8 à 8/8). Je pense qu'il doit exister une fonction vba plus simple qui permettrait de faire cela. J'ai cherché sur plusieurs forums et pour l'instant je n'ai pas trouvé de solutions.
J'espère avoir été claire dans mon message
Re,
Essaies :
Essaies :
Option Explicit Sub Test() Dim t As Variant Dim i As Long Dim j As Byte Dim s As String t = Range("C4:C30000").Formula Range("C4:C30000").NumberFormat = "@" For i = LBound(t) To UBound(t) For j = 0 To 8 s = j & " of 8" If InStr(1, t(i, 1), s) > 0 Then t(i, 1) = j & "/8" End If Next j Next i Range("C4:C30000").Formula = t End Sub