XL 2013 Conversion ligne données en format texte

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.
 

Jacky67

XLDnaute Barbatruc
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:

milo2013

XLDnaute Nouveau
Bonjour,

Merci ça c'est pour la conversion de la ligne en texte, merci.

Mais si je veux sélectionner les lignes dont les cellules selon colonne "B" par exemple est égale à "terminé" et ensuite les convertir en texte si impossible sans boucle FOR?
 

milo2013

XLDnaute Nouveau
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...
 

Jacky67

XLDnaute Barbatruc
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
 

milo2013

XLDnaute Nouveau
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.
 

Jacky67

XLDnaute Barbatruc
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:

milo2013

XLDnaute Nouveau
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.
 

gosselien

XLDnaute Barbatruc
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
 

gosselien

XLDnaute Barbatruc
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 :D )
P.
 

Jacky67

XLDnaute Barbatruc
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:

Discussions similaires

Réponses
8
Affichages
357

Statistiques des forums

Discussions
312 111
Messages
2 085 395
Membres
102 882
dernier inscrit
Sultan94