Aide sur une macro lancée par bouton

Rebonjour à tous!

Voici un extrait de mon fichier

2315-dec-2009.zip (24.91 Ko)

Je n'arrive pas à écrire la macro qui me fera les conversions de format dans les cellules

N'hésitez pas à revenir vers moi si ce n'est pas clair

Merci d'avance pour votre aide et...bon courage!

Bonjour Fabienne,

Tu n'as pas fais toutes les colonnes, c'est voulu ou c'est la flemme ?

précise les colonnes en %

et le nombre de lignes à traiter (environ)

Amicalement

Claude

Bonjour Claude!

Merci pour ton dévouement toujours aussi apprécié.

Non, je te rassure, on n'est que mercredi, ce n'est pas encore la flemme.....

C'est juste que le fichier csv est en cours de modification et que j'aurai 5 colonnes de calcul de pourcentage au lieu de 3 .

Je modifie le fichier test et te le renvoie dans quelques minutes

Fabienne

-- Mer Déc 16, 2009 5:13 pm --

Re!

et les dernières colonnes, pour l'instant je n'ai pas à m'en occuper car elle seront modifiées par la suite dans leur structure.

Entre 1000 et 1500 lignes par an

2615-dec-2009.zip (25.07 Ko)

Merci encore

Fabienne

capture d ecran 136

re,

Désolé, j'y comprends rien quant aux cellules à traiter !

tu aurais du faire 2 feuilles, avant/après, et colorer les colonnes à traiter.

Combien de lignes la macro doit traiter ?

à te relire

Claude.

Bonjour Claude et avant tout, merci!

Ok j'avoue que mes explications ne sont pas claires.

Désolée de t'avoir fait perdre ton temps.

Je recommence le fichier test tranquillement et le renvoie (si, bien entendu, tu as assez de patience pour supporter mon ignorance )

Bonne journée et à tout à l'heure

Fabienne

-- Jeu Déc 17, 2009 9:02 am --

Re!

J'espère que ce sera plus clair comme ça

Bon courage!!

2115-dec-2009.zip (28.10 Ko)

Fabienne

Patiente Fabienne,

maintenant c'est clair mais pas simple à régler, j'ai ouvert un poste pour me faire aider:

https://forum.excel-pratique.com/excel/vba-substitue-ou-remplace-par-t14632.html

Bonne journée

Claude.

Merci Claude!

Je n'ai pas beaucoup de grande qualité mais la patience chez moi en est une.

Et, de toute façon, je serais bien ingrate de trouver le temps long alors que je ne sais pas faire!

Je suis désolée de te donner autont de boulot mais suis ravie de constater l'intérêt que vous tous prenez à dépanner gratuitement les autres.

Chapeau ! et...bon courage!

re,

en attendant,

Chaque jour, la base sera alimentée par environ une dizaine de lignes

çà veut dire que tu feras la conversion tous les jours d'une dizaine de lignes ?

Ces nouvelles lignes que tu reçois, elles viennent à la suite ?

auquel cas, il faudra prévoir dans la macro de repérer les lignes déjà traitées (repère N° de ligne

dans une cellule au choix)

de façon à ne traiter que les nouvelles lignes arrivées, tu vois ?

Ou alors tu stockes les lignes converties ailleurs et tu pars toujours de la ligne 9 ?

Précise ce point, comment tu procède.

Amicalement

Claude.

Merci à Amadéus et Cousinhub pour leur aide. J'ai vraiment beaucoup de chance!

Effectivement, les nouvelles lignes seront ajoutées à la base tous les jours. Il faudra donc effectivement repérer les lignes déjà traitées.

Mais, si c'est trop compliqué, on peut prévoir que je convertisse chaque matin avant de les intégrer à la base (je pense que mon patron y verrait l'inconvénient que si je ne suis pas là, il devrait le faire lui=même et ça......)

Cela dit, fait au mieux pour toi, c'est déjà super!

Merci

Bonsoir Fabienne, à tous,

Grâce à l'aide du forum, surtout "cousinhub", le contrat est rempli,

Sub ChangeFormats_felix()
Dim Lg1 As Long, Lg As Long
Dim Ar As Range, Plg As Range
''Macros par Claude Dubois pour "Fabienne" Excel-Pratique le 17/12/09
''avec l'aide précieuse de "cousinhub"
    Application.ScreenUpdating = False
        Lg1 = WorksheetFunction.Max(Range("a1"), 9)
        Lg = Range("A65536").End(xlUp).Row
        If Range("a" & Lg1) = "" Then Exit Sub
        Set Plg = Range("f" & Lg1 & ":f" & Lg & ", " & "h" & Lg1 & ":h" & Lg _
        & ", " & "t" & Lg1 & ":t" & Lg)
    For Each Ar In Plg.Areas
        Ar.TextToColumns Destination:=Ar(1), FieldInfo _
        :=Array(1, 1), DecimalSeparator:=".", TrailingMinusNumbers:=True
        Ar.NumberFormat = "0.00"
    Next
        Set Plg = Range("n" & Lg1 & ":p" & Lg)
    For Each Ar In Plg
        Ar.TextToColumns Destination:=Ar(1), FieldInfo _
        :=Array(1, 1), DecimalSeparator:=".", TrailingMinusNumbers:=True
        Ar.NumberFormat = "0.00%"
    Next
Range("a1") = Lg + 1 'ligne départ prochaine conversion
End Sub

Bien sur, cette macro traitera toujours les mêmes colonnes,

j'utilise la cellule "A1" comme départ de ligne aux prochaines conversions.

Amicalement

Claude.

24fabienne2.zip (27.98 Ko)

Bonjour Claude, Amadeus, Cousinhub et tout le forum!

Coincée à la maison à cause de la neige (j'ai du faire demi tour) , je n'ai pour l'instant pas accès à mon fichier réel mais j'espère pouvoir me connecter dans la journée.

En attendant, je vais regarder sur le fichier joint et je reviendrai vers vous afin de vous faire un retour.

Je vous remercie infiniment pour l'aide et le dévouement dont vous faites preuve.

Ce forum est un vrai régal!

Bonne journée et à tout à l'heure.

Fabienne

-- Ven Déc 18, 2009 9:49 am --

Re!

Pour moi qui suis ignare en matière de macro, c'est magique!!!!!!!!!

Encore merci à tous, j'ai hâte de mettre en application sur mon fichier réel (mais ce ne sera que lundi car je ne peux pas me connecter!)

Très bonne journée et week-end!

Fabienne

-- Ven Déc 18, 2009 2:34 pm --

salut!

Puis je te poser une question "en mp" en ce qui concerne ce que j'ai pu voir sur la macro

Fabienne

Bonsoir,

Tu peux toujours, pas sur que je réponde en MP

Sur ton fichier, tu n'auras jamais à traiter les autres colonnes (+ à droite) ?

Claude.

Bonjour Claude!

Je n'ai pas encore testé sur mon fichier réel, je vais le faire ce matin et te dirai comment ça fonctionne.

En ce qui concerne les autre colonnes, j'aurai surement à la faire un jour ou l'autre mais pour l'instant, mon patron ne me le demande pas.

Bonne journée et à tout à l'heure

Fabienne

-- Lun Déc 21, 2009 10:21 am --

Bonjour Claude, cousinhub et tout le forum!

J'ai essayé ce matin avec l'extraction du jour. Mais sans résultat. Je ne dois pas faire ce qu'il faut.....

Je vous envoie mon extraction du jour.

J'ai donc reçu un fichier en csv, je l'ai enregistré en xls, j'ai copié la macro et refait un bouton auquel j'ai affecté la macro pour la lancer.

Je ne suis vraiment pas douée....

27stats-20091220.zip (12.18 Ko)

Bonne journée! merci d'avance!!

Fabienne

Bonjour Fabienne,forum,

La macro est conçue avec les 1ères données en ligne 9 (comme ton fichier exemple du départ)

tu aurais du continuer sur mon fichier à la suite, pour tester

Bonne journée

Claude.

Bonsoir,

ou re-,

Essaie avec ce code :

Sub ChangeFormats_felix()
Dim DerLig As Long
Dim Ar As Range, Plg As Range, Cl As Range
Application.ScreenUpdating = False
DerLig = Range("A65536").End(xlUp).Row
Set Plg = Range("F1:F" & DerLig & ", H1:H" & DerLig & ", T1:T" & DerLig)
For Each Ar In Plg.Areas
    Ar.TextToColumns Destination:=Ar(1), FieldInfo _
        :=Array(1, 1), DecimalSeparator:=".", TrailingMinusNumbers:=True
    Ar.NumberFormat = "0.00"
Next Ar
Set Plg = Range("N1:P" & DerLig)
For Each Cl In Plg.Columns
    Cl.TextToColumns Destination:=Cl(1), FieldInfo _
        :=Array(1, 1), DecimalSeparator:=".", TrailingMinusNumbers:=True
    Cl.NumberFormat = "0.00%"
Next Cl
End Sub

Par contre, comme je n'ai pas tout relu depuis le début, il doit manquer les infos concernant quelques colonnes (Q, R, S, W, X et Y), entre autres....

A te relire, pour de plus amples précisions

Bonne soirée

Bonjour,

Dans le code précédent, je ne voulais pas retraiter toutes les lignes, mais seulement celles ajoutées.

Claude

Bonsoir, Claude

Euh, pas de souci, seulement la conversion est si rapide, qu'il me semble inutile d'essayer de grapiller quelques centi-secondes....

(PS, comme je ne voyais pas pourquoi tu utilisais deux variables de lignes (Lg1, et Lg), j'ai tiré au plus court....)

Cependant, j'attends les précisions de Fabienne, concernant les colonnes non traitées....

Bonne soirée (sous la couette pour vous, sous la clim pour moi... )

re,

et sous la neige ici !

pour les autres colonnes, j'ai déjà poser la question à Fabienne (voir + haut)

Bonne couette

Claude

Merci à vous deux!

J'ai testé avec la dernière macro de cousinhub et cela fonctionne bien, en démarrant de la ligne 1.

Seules deux colonnes ne sont pas traitées en conversion %: il s'agit des colonnes Q et R.

Pour l'instant, on ne me demande pas de traiter les autres colonnes, donc, je ne fais pas. Il est fort probable que je revienne vers vous un de ces jours pour le faire, mais, dans l'immédiat....

Je souhaiterais juste une précision :

Est ce que je pourrai alimenter ma base au fur et à mesure ou est ce que je devrais convertir chaque extraction journalière avant d'intégrer les éléments à ma base?

Merci d'avance pour vos réponses et gros dodo à Cousinhub!

Fabienne

-- Lun Déc 21, 2009 3:39 pm --

Re!

C'est génial, cela fonctionne à merveille!

J'ai même modifié la macro afin de traiter en conversion les colonnes Qet R (je suis assez fière de moi!) et j'ai fait le test en reprenant les extractions les une à la suite des autres et en alimentant la base au fur et à mesure.

J'espère sincèrement pouvoir vous remercier un jour de vive voix!

A bientôt sur le forum!

Fabienne

-- Mar Déc 22, 2009 2:31 pm --

Désolée, mais je reviens à nouveau vous solliciter.

Mon patron me demande de virer les décimales sur la colonne H

Comment dois-je modifier la macro, je n'y arrive pas.

Merci d'avance

Fabienne

Bonsoir Fabienne,

Je suis sur que tu aurais trouvé seule,

Sub ChangeFormats() 'de felix
Dim DerLig As Long
Dim Ar As Range, Plg As Range, Cl As Range
    Application.ScreenUpdating = False
        DerLig = Range("A65536").End(xlUp).Row
    Set Plg = Range("F1:F" & DerLig & ", T1:T" & DerLig)
        For Each Ar In Plg.Areas
            Ar.TextToColumns Destination:=Ar(1), FieldInfo _
                :=Array(1, 1), DecimalSeparator:=".", TrailingMinusNumbers:=True
            Ar.NumberFormat = "0.00"
        Next Ar
    Set Plg = Range("N1:P" & DerLig)
        For Each Cl In Plg.Columns
            Cl.TextToColumns Destination:=Cl(1), FieldInfo _
                :=Array(1, 1), DecimalSeparator:=".", TrailingMinusNumbers:=True
            Cl.NumberFormat = "0.00%"
        Next Cl
    Set Plg = Range("h1:h" & DerLig)
        For Each Cl In Plg.Columns
            Cl.TextToColumns Destination:=Cl(1), FieldInfo _
                :=Array(1, 1), DecimalSeparator:=".", TrailingMinusNumbers:=True
            Cl.NumberFormat = "0"
        Next Cl
End Sub

Bonnes fêtes

Claude.

édit: Pourrais-tu modifier le titre du poste qui ne veut plus rien dire, par exemple :

"Conversion nombre texte en numérique"

ce qui permettrait des recherches futures.

Rechercher des sujets similaires à "aide macro lancee bouton"