Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Macros Excel

2 réponses
Avatar
John Vernon
Bonjour,

J'importe régulièrement un fichier tarif de quelques 2000 lignes par 30
colonnes que je mets en forme avec un macro. Il y a deux opérations que je
n'arrive pas à mettre en macro: est-ce que quelqu'un a des idées ?

1 Après importations les colonnes de prix s'affichent correctement mais ne
sont pas en format Nombre. Pour les convertir il y a deux techniques que
je connais:
- sélectionner la zone, cliquer sur la losange orange avec "!" et
Convertir.
- entrer 1 dans une cellule vide quelquepart, Copier, sélectionner la zone,
Collage Speciale/Multiplier.
Ces deux méthodes fonctionnent très bien en manuel, mais après
enregistrement dans un macro, ne font pas ce qu'on attend d'eux.

2 La liste est plus facile à lire et à naviguer si on sépare chaque groupe
de produits par une ligne vide. Dans le fichier importé il n'y en a pas,
comment les ajouter ? Existe-t-il une façon d'insérer une ligne vide à
chaque changement de contenu des cellules dans une colonne donnée ?
Logiquement je veux faire ceci:
pour les cellules de la colonne B descendre une à une chaque cellule
si le contenu de la cellule = celui de la cellule immédiatement
supérieure, aller une cellule en bas sans rien faire d'autre
si le contenu de la cellule n'est pas identique à celui de la cellule
supérieure, insérer une ligne vide au-dessus puis aller une cellule en bas
reboucler pour 2000 cellules.

Merci beacoup de vos lumières!

JV

2 réponses

Avatar
Philippe.R
Bon{j,s}o{u,i}r,
Pour le pb n°1 :
sélectionner les colonnes en question et appliquer ce type d'instruction :

Sub conv()
For Each c In Selection
c.Value = c.Value + 0
Next c
End Sub

Pour le pb n° 2, :

l'idée peut être mise en pratique de cette manière sur la colonne D

Sub inserlig()
For i = 1 To Range("d9999").End(xlUp).Row
If Cells(i + 1, "d").Value <> _
Cells(i, "d").Value Then
Cells(i + 1, 4).EntireRow.Insert
i = i + 1
End If
Next i
End Sub
--
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
Avec plaisir
http://dj.joss.free.fr/trombine.htm
Philippe.R
"John Vernon" a écrit dans le message de
news:
Bonjour,

J'importe régulièrement un fichier tarif de quelques 2000 lignes par 30
colonnes que je mets en forme avec un macro. Il y a deux opérations que
je
n'arrive pas à mettre en macro: est-ce que quelqu'un a des idées ?

1 Après importations les colonnes de prix s'affichent correctement mais
ne
sont pas en format Nombre. Pour les convertir il y a deux techniques que
je connais:
- sélectionner la zone, cliquer sur la losange orange avec "!" et
Convertir.
- entrer 1 dans une cellule vide quelquepart, Copier, sélectionner la
zone,
Collage Speciale/Multiplier.
Ces deux méthodes fonctionnent très bien en manuel, mais après
enregistrement dans un macro, ne font pas ce qu'on attend d'eux.

2 La liste est plus facile à lire et à naviguer si on sépare chaque
groupe
de produits par une ligne vide. Dans le fichier importé il n'y en a pas,
comment les ajouter ? Existe-t-il une façon d'insérer une ligne vide à
chaque changement de contenu des cellules dans une colonne donnée ?
Logiquement je veux faire ceci:
pour les cellules de la colonne B descendre une à une chaque cellule
si le contenu de la cellule = celui de la cellule immédiatement
supérieure, aller une cellule en bas sans rien faire d'autre
si le contenu de la cellule n'est pas identique à celui de la cellule
supérieure, insérer une ligne vide au-dessus puis aller une cellule en bas
reboucler pour 2000 cellules.

Merci beacoup de vos lumières!

JV



Avatar
John Vernon
Bonsoir,

Merci beaucoup, je vais les essayer.

JV


"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de
news:eoD%
Bon{j,s}o{u,i}r,
Pour le pb n°1 :
sélectionner les colonnes en question et appliquer ce type d'instruction :

Sub conv()
For Each c In Selection
c.Value = c.Value + 0
Next c
End Sub

Pour le pb n° 2, :

l'idée peut être mise en pratique de cette manière sur la colonne D

Sub inserlig()
For i = 1 To Range("d9999").End(xlUp).Row
If Cells(i + 1, "d").Value <> _
Cells(i, "d").Value Then
Cells(i + 1, 4).EntireRow.Insert
i = i + 1
End If
Next i
End Sub
--
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
Avec plaisir
http://dj.joss.free.fr/trombine.htm
Philippe.R
"John Vernon" a écrit dans le message de
news:
Bonjour,

J'importe régulièrement un fichier tarif de quelques 2000 lignes par 30
colonnes que je mets en forme avec un macro. Il y a deux opérations que
je
n'arrive pas à mettre en macro: est-ce que quelqu'un a des idées ?

1 Après importations les colonnes de prix s'affichent correctement mais
ne
sont pas en format Nombre. Pour les convertir il y a deux techniques
que
je connais:
- sélectionner la zone, cliquer sur la losange orange avec "!" et
Convertir.
- entrer 1 dans une cellule vide quelquepart, Copier, sélectionner la
zone,
Collage Speciale/Multiplier.
Ces deux méthodes fonctionnent très bien en manuel, mais après
enregistrement dans un macro, ne font pas ce qu'on attend d'eux.

2 La liste est plus facile à lire et à naviguer si on sépare chaque
groupe
de produits par une ligne vide. Dans le fichier importé il n'y en a pas,
comment les ajouter ? Existe-t-il une façon d'insérer une ligne vide à
chaque changement de contenu des cellules dans une colonne donnée ?
Logiquement je veux faire ceci:
pour les cellules de la colonne B descendre une à une chaque cellule
si le contenu de la cellule = celui de la cellule immédiatement
supérieure, aller une cellule en bas sans rien faire d'autre
si le contenu de la cellule n'est pas identique à celui de la cellule
supérieure, insérer une ligne vide au-dessus puis aller une cellule en
bas
reboucler pour 2000 cellules.

Merci beacoup de vos lumières!

JV