Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

mise en forme fichier avec macro

  • Initiateur de la discussion Initiateur de la discussion jean06260
  • Date de début Date de début

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 !

J

jean06260

Guest
Bonjour,

Je souhaite automatiser la mise en forme de fichiers excels afin de les utiliser avec un autre logiciel. Mon fichier se présente sous la forme suivante : 4 colonnes, colonne A : Prof (nombre); col B : AZ (nombre); Col C : dip (nombre); col D; Nat (texte, 2 lettres). Le nombre de donnée est variable d'un fichier à l'autre. Le fichier final doit se présenter sous la forme suivante : nombre de colonnes variable (dépendant du nombre de Nat différent), 4 colonnes par nat avec Ci : Prof (nombre); Ci+1 : AZ (nombre); Ci+2 : dip (nombre); Ci+3; Nat (texte, 2 lettres).
Pourriez vous me donner quelques indications pour réussir à automatiser cette mise en forme?
Merci
 
Dernière modification par un modérateur:
Re : mise en forme fichier avec macro

Salut Jean jean

Alors voilà une petite astuce utile :

Va dans la menu déroulant outils, puis sur macro, puis sur enregistrer une macro.

A partir de cet instant tout ce que tu fais est enregistré. quand tu as finis clique sur terminer sur la petite fenêtre ouverte. et donne un nom à ta macro.

Change de page et lance cette macro. elle répètera toutes les opérations enregistrées.

😛
 
Re : mise en forme fichier avec macro

Salut excelerator,
J'avais déjà fait cela pour avoir un début de macro. Mais le problème est que chaque fichier est diffèrent, je n'ai jamais le même nombre de données. Donc si je répéte cette macro enregistrée sur un autre fichier j'obtiens un résultat farfellu.
J'ai essayé de faire quelque chose avec cette macro qui marche avec des chiffres mais ne marche pas avec des lettres. Dans cette macro je colorise en jaune les cellules contenant la valeur recherchée.

Sub test
Dim vvaleur as string
dim vcellule as object
dim vselection as string
vvaleur=val(inputbox("nature à selectionner"))
selection.currentregion.select
for each vcellule in selection
if vcellule.value=vvaleur then vselection=vselection & vcellule.address & ","
next
If len(vselect)>0 ( sans doute est-ce pour cela que ça ne marche pas avec des lettres)then range (left(vselection, len (vselection)-1)).select
Select.interior.colorindex=6
end if
end sub

L'étape suivante serait de copier les 4 colonnes contenant la valeur recherchée sur une autre feuille, et de recommencer pour une autre valeur de nat.
 
Re : mise en forme fichier avec macro

Gael, je te remercie pour cette macro qui marche à merveille.
Je vais essayer de comprendre ce que fait cette macro. Mais j'aurais besoinde tes lumière pour comprendre, car je ne vois pas de copier coller que je pensais utiliser dans ma macro.


tablo = ActiveSheet.Range("A1").CurrentRegion
ReDim TabNAT(UBound(tablo), 4)
Sheets.Add 'ajout d'une nouvelle feuille
N = 0
NAT = tablo(2, 4)
Que fait cette boucle ci-dessous?
For i = 2 To UBound(tablo)'qu'est-ce Ubound?
If tablo(i, 4) <> NAT Then
Cells(2, 4 * N + 1).Resize(k, 4) = TabNAT
ReDim TabNAT(UBound(tablo), 4)
N = N + 1
k = 0
NAT = tablo(i, 4)
End If
For j = 0 To 3
TabNAT(k, j) = tablo(i, j + 1)
Next j
k = k + 1
If i = UBound(tablo) Then
Cells(2, 4 * N + 1).Resize(k, 4) = TabNAT
End If

Next i
 
Dernière modification par un modérateur:
Re : mise en forme fichier avec macro

Re,

Code:
tablo = ActiveSheet.Range("A1").CurrentRegion

mets en mémoire l'ensemble des données de la 1ére ligne/colonne utilisée jusqu'à la dernière. On navigue ensuite dans le tableau comme dans une feuille de calcul avec tablo(ligne, colonne).

Ubound(tablo) représente le nombre de lignes du tableau.

La boucle lit le tableau en mémoire ligne à ligne et copie chaque élément dans un autre tableau temporaire (TabNAT) jusqu'à ce que NAT change de valeur.

Si NAT change de valeur, on se positionne sur la ligne 2 et la colonne correspondant au nombre de NAT (col 1, puis 5, puis 9...), le resize sert à agrandir la plage sélectionnée au nombre de lignes (k) et colonnes (4) souhaité et le =TABNAT écrit les données du tableau dans la plage.

Code:
Cells(2, 4 * N + 1).Resize(k, 4) = TabNAT

La macro se termine avec une boucle pour créer tous les titres en ligne 1.

@+

Gael
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
6
Affichages
347
Réponses
25
Affichages
1 K
Réponses
6
Affichages
775
Réponses
7
Affichages
378
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…