XL 2013 Conversion ligne données en format texte

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

milo2013

XLDnaute Nouveau
Bonjour à tous,

Une fois de plus j'ai besoin de votre aide et je vous en remercie d'avance pour ceux qui pourront m'aider.

Je dispose d'un fichier Excel avec des milliers de lignes qui font appel à des formules (recherchev, ...). Du fait qu'il y a énormément de lignes le fichier est très lourd et la modification ou même la consultation de ce fichier engendre énormément de perte de temps du fait du recalcul des formules.

Je dispose de:

- une colonne avec les données en cours ou terminé

Je voudrais:

- via une macro (boucle for à éviter si possible car relativement long) si la cellule est à terminé, sélectionner la ligne et la coller au format texte pour supprimer toutes les formules et ainsi réduire la taille du fichier et aussi faciliter sa consultation et modification.

J'espère avoir été clair et si tel n'est pas le cas n'hésitez pas à me dire.
Merci et bonne journée.
 
Bonjour à tous,

Une fois de plus j'ai besoin de votre aide et je vous en remercie d'avance pour ceux qui pourront m'aider.

Je dispose d'un fichier Excel avec des milliers de lignes qui font appel à des formules (recherchev, ...). Du fait qu'il y a énormément de lignes le fichier est très lourd et la modification ou même la consultation de ce fichier engendre énormément de perte de temps du fait du recalcul des formules.

Je dispose de:

- une colonne avec les données en cours ou terminé

Je voudrais:

- via une macro (boucle for à éviter si possible car relativement long) si la cellule est à terminé, sélectionner la ligne et la coller au format texte pour supprimer toutes les formules et ainsi réduire la taille du fichier et aussi faciliter sa consultation et modification.

J'espère avoir été clair et si tel n'est pas le cas n'hésitez pas à me dire.
Merci et bonne journée.
Bonjour,
Par exemple pour la ligne 1
Code:
Sub SupprimeFormule()
Dim lig As Long
lig = 1
Rows(lig).Value = Rows(lig).Value
End Sub
*OU pour la sélection en cours
Code:
Sub SupprimeFormule()
Selection.Value = Selection.Value
End Sub
 
Dernière édition:
J'ai trouvé un début de réponse.

Dans la macro j'utilise le filtre (fichier avec filtres) pour sélectionner uniquement la plage qui contient "terminé" mais maintenant comment faire pour sélectionner la plage qui est filtrée uniquement sachant que celle celle-ci commence en cellule A4 mais peu trés bien commencer en cellule A50 puisque cela dépend du critère "terminé"...j'espère que vous m’avez compris...
 
J'ai trouvé un début de réponse.

Dans la macro j'utilise le filtre (fichier avec filtres) pour sélectionner uniquement la plage qui contient "terminé" mais maintenant comment faire pour sélectionner la plage qui est filtrée uniquement sachant que celle celle-ci commence en cellule A4 mais peu trés bien commencer en cellule A50 puisque cela dépend du critère "terminé"...j'espère que vous m’avez compris...
Re...
Donne un bout de ton classeur avec les dispositions des données sans données confidentielles
 
Merci jacky67, car avec ta réponse j'arrive à convertir les lignes en texte.
Maintenant je voudrais sélectionner dans le tableau les lignes uniquement avec le critère "terminé" selon colonne avec filtre "etat" et ensuite utiliser ton code pour convertir ces lignes en texte.
 
Voilà le fichier simplifié.
Merci.

RE...
Ce que tu demande est à ma connaissance impossible sans boucle
Les lignes deviennent non contigues après le filtre
Une proposition à tester (par ligne entière Ax;CRx)
Code:
Sub Conversion()
Sheets("Request Backlog").Select
ActiveSheet.Range("$A$3:$CR$45").AutoFilter Field:=12, Criteria1:="Closed"
Set plage = Range("$A$3:$CR$45").SpecialCells(xlCellTypeVisible)
For Each lig In plage.Rows
lig.Value = lig.Value
Next
End Sub
 
Dernière édition:
Salut gosselien,

le fichier se trouve plus haut dans le forum. Le but est de sélectionner selon colonne "L" la valeur "closed", ensuite selon les lignes présélectionnées par le filtre, je voudrais convertir les valeurs de toutes les cellules en format texte.
 
re,
pour ma part , j'ai essayé sur ton fichier mais j'ai descendu celui-ci en ligne 5; les lignes 3 et 4 sont donc vides et non contigues avec les différents titres colorés (ligne 1) et les titres "supplier" se retouvent donc en ligne 2
Ceci permet de trier la colonne sans foutre le boxon et ensuite le filtre sur le critère de la 12e colonne et ensuite tu retries sur la colonne de ton choix; au besoin tu insères une colonne "ordre" au préalable pour retrier sur celle ci après mon tri.
Le code de Jacky67 est identique sauf un tri préalable et les titres en ligne 5; je n'ai pas eu d'erreur 1004.

VB:
Sub Conversion()
Sheets("Request Backlog").Select
' tri préalable
[L5].Sort Key1:=[L5], Order1:=xlAscending, Header:=xlYes ' titres en ligne 5 et lignes 4-3 vides
ActiveSheet.Range("$A$5:$CR$42").AutoFilter Field:=12, Criteria1:="Closed"
Set plage = Range("$A$5:$CR$42").SpecialCells(xlCellTypeVisible)
For Each lig In plage.Rows
   lig.Value = lig.Value
Next
End Sub
 
Re,

Merci, ça marche mais le fichier original contient plein de cellules avec des formules, pas le fichier transmis, et je voudrais convertir les cellules selon le tri au format texte.
Merci.
bin...
ceci dans le code le fait hein 🙂
sub txt
plage = selection ' plage selectionnée avec la souris et qui comportent des formules
For Each lig In plage.Rows
lig.Value = lig.Value
Next
end sub
essaye sur une feuille avec juste des formules, tu auras le résultat et plus de formule si c'est ça que tu cherches à avoir 🙂
ou alors j'ai mal compris ? (ce qui m'arrive plus souvent qu'à mon tour 😀 )
P.
 
Re,

Merci, ça marche mais le fichier original contient plein de cellules avec des formules, pas le fichier transmis, et je voudrais convertir les cellules selon le tri au format texte.
Merci.
RE..
Ceci fera une copie de la feuille original qui sera nommée "copie"
Testes ce code avec le classeur original
S'il y a une erreur regarde la ligne incriminée
Code:
Sub Conversion()

Application.DisplayAlerts = False
On Error Resume Next
Sheets("copie").Delete
On Error GoTo 0
Application.DisplayAlerts = True
Feuil1.Copy After:=Feuil1
ActiveSheet.Name = "copie"
On Error GoTo fin
With Sheets("copie")
    derlg =. Cells.Find("*", , , , xlByRows, xlPrevious).Row
    Set plage = .Range("$A$3:$CR$" & derlg)
    For Each lig In plage.Rows
        lig.Value = lig.Value
    Next
    plage.AutoFilter Field:=12, Criteria1:="Closed"
End With
Exit Sub
fin:
MsgBox "Ligne à vérifier: " & lig.Address
End Sub

*Dans ce code feuil1 est le codename de la feuille concernée . A modifier si nécessaire
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
611
Réponses
5
Affichages
422
Retour