Macro

Bonjour

je souhaiterai savoir s'il est possible de créer une macro pour insérer des lignes entre des numéros.

dans le fichier joint, j’ai créer une macro tri qui fonctionne a peu prêt bien.

j'ai ajoute des lignes entre chaque numéro de référence manuellement que je voudrai automatiser comme le tri.

merci pour vos réponses

Bonjour,

Dans ton module1...

Option Explicit

Sub TRI()
Dim Dlig As Integer

   Worksheets("Feuil1").Select
   Dlig = Cells(Rows.Count, "A").End(xlUp).Row

   Range("A1:I" & Dlig).Select
   ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
   ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("G2:G" & Dlig) _
                                                                , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   With ActiveWorkbook.Worksheets("Feuil1").Sort
      .SetRange Range("A1:I" & Dlig)
      .Header = xlYes
      .MatchCase = False
      .Orientation = xlTopToBottom
      .SortMethod = xlPinYin
      .Apply
   End With
   Cells(15, "K").Select
   Call AjouterLignes
End Sub

Sub AjouterLignes()
Dim Dlig As Integer
Dim X As Integer

   Dlig = Cells(Rows.Count, "A").End(xlUp).Row
   For X = Dlig To 3 Step -1
      If Cells(X, "G").Value <> Cells(X - 1, "G").Value Then
         Range("A" & X & ":i" & X).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
      End If
   Next X
End Sub

ric

Bonsoir

Merci pour ta réponse, mais tu n'aurais pas plutôt un tuto pour que je puisse comprendre le fonctionnement

Merci

Bonjour,

Est-ce que ceci suffira ?

Spoiler

Sub TRI()

Dim Dlig As Integer ' variable pour trouver la dernière ligne

Dlig = Cells(Rows.Count, "A").End(xlUp).Row ' trouver la dernière ligne de la colonne A

Range("A1:I" & Dlig).Select ' sélectionne la plage

ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear ' vide la dernière recherche

' effectue la recherche

ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("G2:G2" & Dlig) _

, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

With ActiveWorkbook.Worksheets("Feuil1").Sort

.SetRange Range("A1:I" & Dlig)

.Header = xlYes

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply

End With

Cells(15, "K").Select ' sélectionne K15 pour désélectionner la plage de la recherche.

Call AjouterLignes ' appelle une autre macro

End Sub

Sub AjouterLignes()

Dim Dlig As Integer ' variable pour trouver la dernière ligne

Dim X As Integer

Dlig = Cells(Rows.Count, "A").End(xlUp).Row ' trouver la dernière ligne de la colonne A

For X = Dlig To 3 Step -1 ' boucle de la dernière ligne en remontant jusqu'à la ligne 3

' si la valeur de Gx est différente de Gx-1 (ligne au dessus)

If Cells(X, "G").Value <> Cells(X - 1, "G").Value Then

' Si vrai, sélectionne Ax:Ix et insère une ligne

Range("A" & X & ":i" & X).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

End If

Next X ' boucle sur la ligne précédente (puisqu'on remonte)

End Sub

ric

@ric : oh ! tes commentaires VBA sont devenus tout bleu ! c'est des commentaires schtroumpfs ?

Merci mais la je nage complet.

suis novice avec excel

Bonjour dens68,

tu as l'aide VBA : mets ton curseur de texte sur un mot-clé VBA, puis appuie sur la touche F1


cela aussi pourra t'aider :

cours vba xlp

tu peux aussi faire une recherche google avec ces 3 mots : « cours vba gratuit »

dhany

Bonjour

Y aurait il une âme charitable qui pourrait me le créé dans mon modèle ci dessus

Merci

Bonjour,

Le voici ... le bouton jaune "cliquer pour trier" reste bon et il fait les 2 actions :

  • Trier la plage dynamique ( si tu ajoutes ou retires des lignes, le code s'adaptera ).
  • Ajoute des lignes entre les segments différents de la colonne G.

Quand tu es dans ta feuille > ALT+F11 > va t'amener dans VBE > dans la colonne de gauche > clique sur Module1 > tu y trouveras le code.

Bon courage dans ton apprentissage du VBA.

dhany t'a montré le chemin des cours Excel et VBA pour Excel qui peuvent t'aider à avancer très rapidement dans la connaissance super intéressante du langage VBA pour Excel.

ric

Merci infiniment

ric

Bonjour

je reviens sur le sujet parce que j'ai un autre tableau dans le même genre a faire, mais je n'y arrive pas.

j'ai regarde dans la macro mais je ne comprend pas comment faire.

Pourriez vous me faire une vidéo de la procédure comme elle a ete faite pour mon tableau ci dessus?

Merci d'avance

Bonjour,

Je vais te faire une liste détaillée des points à voir.

En attendant, j'aimerais que tu m'éclaircisses 3 points :

1- La colonne G (Référence), sera-t-elle toujours la ligne de référence pour insérer des lignes? Ou cette colonne peut varier ?

2- Est-ce que le nombre de colonnes variera ?

3- Tu as soumis un fichier .xls (un ancien format). Ton profil indique Excel 2010 (format .xlsm > avec macros) ... Y a-t-il une raison particulière de conserver un ancien format ? Ou il serait bien de passer au nouveau format ?

En attendant, je commence à te tricoter un tuto. Mais ce ne sera pas une vidéo.

ric

1 non la colonne peut varier

2 oui il y aura plus de colonnes

3 j'ai du modifier le format .xlsm en .xls parce que je dessine sur topsolid et lors de l'export d'une nomenclature vers le fichier modele,

il ne prend pas en charge le format.xlsm.donc on peut passer au nouveau format.

Merci de prendre le temps de me faire un tuto.

Bonjour,

Le .zip, en fichier joint, contient un fichier module de macro et ton fichier exemple.

Dézippe ...

Ton fichier exemple contient une feuille "Consignes".

Les consignes devraient être suffisantes pour faire fonctionner les macros sur ton autre classeur.

Les macros ont été modifiées pour être plus dynamiques ... facilitant l'intégration au nouveau classeur.

Je reste disponible pour les "Au cas où .... "

ric

bonjour

une petite question dans le même genre.

lorsque je clique sur le bouton trier, il tri et sépare les references.

mais dans les colonnes en rouge il laisse lees cellules vides en rouge.

est ce qu'avec ton petit tuto je peux faire que les cellules restent blanche.

Merci

Bonjour,

Le rouge provient d'une "mise en forme conditionnelle" des cellules des colonnes B et C qui s'applique de la ligne 2 à la ligne 240 > laquelle mfc est : si la valeur de la cellule = de 0 à 59 > mets en rouge.

En insérant des lignes, les valeurs des cellules des colonnes B et C sont à 0 > la mise en forme s'applique.

Vite de même, je n'ai pas de solution.

ric

ok merci pour ta reponse

Rechercher des sujets similaires à "macro"