[VBA] Macro mise en forme sous conditions & balayage de toutes les lignes du fichier

Xlcium

XLDnaute Nouveau
Bonjour à tous,

J'utilise Excel depuis plusieurs années mais le code VBA c'est plutôt une source d'angoisses, de stress et une grosse perte de temps en recherche par mon inefficacité...

C'est pourquoi je vous tourne vers des passionnés pour me « sortir de l'ornière».

Je vous explique le sujet. Je reçois un fichier d’une application informatique avec plus ou moins de données et plus ou moins de colonnes, qu’il faut « arranger » pour sauvegarder en CSV.

La macro sera déclenchée par un bouton « magique » qui évitera les manips de mise en forme et fera donc gagner du temps aux personnes concernées.
J’ai déjà mis en place quelques contrôles de mise en forme, comme la suppression de ligne(s), vidage de colonne(s)… avec l’enregistreur de macro, en lisant beaucoup et/ou trouvant du code sur Internet, (Bouhh le vilain il sait pas coder alors « il pompe»…) mais là je bloque sur une fonctionnalité.

J’ai deux colonnes qui contiennent les données à mettre en forme. Col28 et Col29. En colonne 8 on a la concaténation des colonnes mais je voudrais la modifier pour coller au format cible. La colonne 8 devra être sur 8 caractères.
Mon idée c’est de comparer la longueur du contenu de la cellule en Col28, si la longueur est différente de 8 on préfixe la valeur par des zéros. Ce traitement doit être fait de la première cellule de la col28 jusqu’à la dernière, et la valeur calculée remplace alors le contenu de la colonne 8.

J’ai déjà dans ma macro une variable NBL : qui compte le nombre de lignes du fichier.

Option à terme: une fois que cette fonctionnalité sera mise en place, il faut que je prévois l’ajout de la donnée Col29 séparée par un « / » en col8 cible.

Je vous laisse regarder le contenu du fichier en pièce jointe pour illustrer "le pavé".

Dites-moi si c’est suffisamment explicite.

Par avance, merci pour votre aide.


Excel 2010 sous WIN 7 (tout à jour)
 

Pièces jointes

  • Fichier Modèle Forum.xls
    91.5 KB · Affichages: 91
Dernière édition:

Xlcium

XLDnaute Nouveau
Re : [VBA] Macro mise en forme sous conditions & balayage de toutes les lignes du fic

Bonjour,

J'effectue un petit up. Personne n'est intéressé ? Trop facile ? Pas clair ?

J'ai effectué quelques recherches sur le forum mais rien qui puisse m'aider...

D'avance, merci beaucoup à tous ceux qui voudront bien jeter un oeil.

Bien cordialement,
 

Xlcium

XLDnaute Nouveau
Re : [VBA] Macro mise en forme sous conditions & balayage de toutes les lignes du fic

Bonjour à tous,

J'ai essayé le code suivant mais j'ai une erreur à la compilation, End If sans bloc If.

J'aimerais me sortir de ce blocage cette semaine, svp.

D'avance, merci pour vos retours.

Sub Macro3()
'' Macro3 Macro


Set r = Range("Col28")

For L = 1 To r.Rows.Count

If Len(r.Cells(L, 1).Value) <> 8 Then r.Cells(L, 1).Value = "Text(r.Cells(L, 1).Value, ""00000000"", "")"

End If

'ActiveCell.FormulaR1C1 = "=IF(LEN(RC[-2])<>8,TEXT(RC[-2],""00000000""),"""")"
Next L


End Sub
 

Xlcium

XLDnaute Nouveau
Re : [VBA] Macro mise en forme sous conditions & balayage de toutes les lignes du fic

Bonjour et merci pour votre retour.

J'ai essayé ce code et malheureusement je plante avec erreur 1004, la méthode 'Range' de l'objet '_Global' a échoué.

Je ne vois pas d'où ça peut venir...

D'avance, merci.

Sub Macro3()
'' Macro3 Macro

Dim r As Range
Dim L As Integer

Set r = Range("Col28")

For L = 1 To r.Rows.Count

If Len(r.Cells(L, 1).Value) <> 8 Then Cells(L, 1).Formula = "=Text(Cells(L, 1).Value, ""00000000"", "")"

'End If

'ActiveCell.FormulaR1C1 = "=IF(LEN(RC[-2])<>8,TEXT(RC[-2],""00000000""),"""")"
Next L

End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : [VBA] Macro mise en forme sous conditions & balayage de toutes les lignes du fic

Re,

plus la même erreur..... sur quelle ligne ca bogue, peut êtrecelle ci :
Code:
Set r = Range("Col28")

"col" n'est pas une référence de colonne valide, enfin sous 2003....
 

Xlcium

XLDnaute Nouveau
Re : [VBA] Macro mise en forme sous conditions & balayage de toutes les lignes du fic

re,

oui c'est exactement cette ligne. J'ai mis une référence valide C1 dans excel par exemple, ça ne fait pas ce que j'attends...

du coup j'ai essayé avec le code ci dessous:

(ne pas tenir compte du nom de macro...) toujours pour essayer de traiter le soucis de mon premier poste...

Là j'ai l'erreur suivante: erreur 1004 "erreur définie par l'application ou par l'objet sur la ligne
:
ActiveCell.FormulaR1C1 = "=TEXT(Cell;""00000000""))"


Je ne sais vraiment pas m'en sortir...



Sub remplacerCaracteres()
Dim Cell As Variant
Range(Cells(1, 28), Cells(20, 28)).Select

For Each Cell In Selection
If Len(Cell.Value) <> 8 Then
ActiveCell.FormulaR1C1 = "=TEXT(Cell;""00000000""))"
'' ActiveCell.FormulaR1C1 = "=texte(G2;""00000000"")"
End If
Next Cell
End Sub
 

Xlcium

XLDnaute Nouveau
Re : [VBA] Macro mise en forme sous conditions & balayage de toutes les lignes du fic

Re, malgré le changement de code cela ne fonctionne pas j'ai toujours la même erreur.

Erreur suivante: erreur 1004 "erreur définie par l'application ou par l'objet sur la ligne

ActiveCell.FormulaR1C1 = "=TEXT(" & Cell & ";""00000000""))"


J'ai plusieurs fichiers excel ouvert en même temps. Est ce que ça peut jouer ?

Merci.


Sub Macro3()
Dim Cell As Variant
Range(Cells(1, 28), Cells(20, 28)).Select

For Each Cell In Selection
If Len(Cell.Value) <> 8 Then
ActiveCell.FormulaR1C1 = "=TEXT(" & Cell & ";""00000000""))"

End If
Next Cell
End Sub
 

Xlcium

XLDnaute Nouveau
Re : [VBA] Macro mise en forme sous conditions & balayage de toutes les lignes du fic

Re,

Je n'ai fais qu'essayer de résoudre mon point...je ne suis pas plus "formuliste" que maitre dans l'adressage de variable ou autre...

As tu jeter un oeil à mon sujet exposé dans le premier post ? Est ce suffisamment clair ?

Est ce qu'il y a un moyen simple de balayer une colonne d'un classeur, vérifier la longueur du contenu de chaque cellule et si la longueur n'est pas celle attendue, alors appliquer des zéros devant.


Merci de ton retour.
 

Pierrot93

XLDnaute Barbatruc
Re : [VBA] Macro mise en forme sous conditions & balayage de toutes les lignes du fic

Re,

As tu jeter un oeil à mon sujet exposé dans le premier post ? Est ce suffisamment clair ?

perso, pas tout compris et pas trop le temps ni le besoin de me plonger dans ton appli....

le mieux si tu veux avancer, est d'isoler les questions, une discussion pour chaque et avec un tout petit fichier en JP ne représentant que le problème posé...

bon après midi et bon courage pour la suite....
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 943
Membres
101 849
dernier inscrit
florentMIG