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

Macro pour insérer automatiquement une ligne vide

frenchyboy2015

XLDnaute Nouveau
Bonjour,


J'ai tenté, sans succès, de créer une macro pour insérer une ligne vide lorsque le numero de certificat (colonne A) change, c-a-d insérer une ligne vide entre chanque numéro de certificat différent.


Par exemple, dans le fichier ci-joint, j'aimerais qu'une ligne vide s'ajoute entre les lignes 3-4, 7-8, 10-11, etc...


Merci a l'avance pour votre aide et/ou conseil,


Frenchyboy
 

Pièces jointes

  • Macro_Insert_Rows.xls
    453 KB · Affichages: 36

DoubleZero

XLDnaute Barbatruc
Bonjour, frenchyboy2015, le Forum,

Comme ceci ?
VB:
Option Explicit
Sub Ligne_insérer()
    Dim i As Long
    Application.ScreenUpdating = False
    Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    For i = Cells(Rows.Count, "a").End(xlUp).Row To 2 Step -1
        If Range("a" & i) <> Range("a" & i - 1) Then Range("a" & i).EntireRow.Insert
    Next i
    Range("a2:d2").Interior.ColorIndex = xlNone
    Application.ScreenUpdating = True
End Sub
A bientôt
 

frenchyboy2015

XLDnaute Nouveau


Wow merci DoubleZero c'est très apprécié!!!!

Peux-tu me conseiller sur des sites internet / lectures pour que je puisses m'améliorer ma programmation VBA?

Encore merci,

Frenchyboy

Merci
 

frenchyboy2015

XLDnaute Nouveau
Re-bonjour,

- user, abuser de l'enregistreur de macros ;

- fréquenter XLD ;

- consulter cette discussion.

Bon courage et à bientôt

Merci pour cette information, je vais m'en servir pour tenter de parfaire mes connaissances VBA

Si je peux permettre d'utiliser tes connaissances approfondies, tu trouveras dans le fichier ci-joint le résultat final, pour les 2 premiers cas, que je recherche.

Sans vouloir abuser, je te serai reconnaissant si tu peux me guider sur le chemin à prendre pour résoudre mon problème.

Je cherche à trouver la façon de coder ceci;
1- en colonne D, lorsque la cellule i est vide, fait la somme de i-1 jusqu'à la prochaine ligne vide
2- en colonne E, calculer la proprotion de chaque montant i (de la colonne D) par rapport au total trouvé ci-haut

Je vais comprendre si tu hésites à m'aider, car ce n'est pas à toi à faire tout le travail pour moi!

Merci à l'avance,

Ton ami Frenchyboy
 

Pièces jointes

  • Macro_Insert_Rows.xls
    504.5 KB · Affichages: 31

job75

XLDnaute Barbatruc
Bonjour frenchyboy2015, chère ânesse,
Je ne parviens pas à traiter le point 2. Un autre membre saura certainement trouver une solution.
J'ai juste complété la macro Sous_total_insérer en entrant la formule =Pourcent() en colonne E .

Le code de la fonction :
Code:
Function Pourcent()
Application.Volatile
Dim i&, j As Variant
Pourcent = ""
i = Application.Caller.Row
'If Cells(i, 1) Like "Total*" Then Exit Function 'si l'on ne veut pas des 100%
j = Application.Match("Total*", Range("A" & i & ":A" & Rows.Count), 0)
On Error Resume Next 'si le calcul n'est pas possible
Pourcent = Cells(i, 4) / Cells(i + j - 1, 4)
End Function
Fichier joint.

A+
 

Pièces jointes

  • 00 - frenchyboy2015 - Sous_total insérer(1).xlsm
    334.7 KB · Affichages: 39

job75

XLDnaute Barbatruc
Re,

On peut bien sûr supprimer les formules en ne conservant que les valeurs :
Code:
    With [A1].CurrentRegion.Columns(5)
      .Formula = "=Pourcent()": .Cells(1) = "%": .Value = .Value
    End With
Fichier (2).

A+
 

Pièces jointes

  • 00 - frenchyboy2015 - Sous_total insérer(2).xlsm
    334.9 KB · Affichages: 53

frenchyboy2015

XLDnaute Nouveau
Merci à vous 2 de m'aider à tenter de comprendre et de m'avancer dans le monde de la programmation de macro!

Je vais paraître débutant....mais je suis incapable d'ouvrir vos fichers.

Pouvez-vous me guider?

Merci bien,

Frenchyboy
 

job75

XLDnaute Barbatruc
Bonjour frenchyboy2015, chère ânesse, le forum,

Il ne faut pas essayer d'ouvrir le fichier en ligne, il faut d'abord le télécharger.

Clic droit sur le nom du fichier => Enregistrer la cible du lien sous...

A+
 

frenchyboy2015

XLDnaute Nouveau
Je n'ai accès qu'à la version office 2003. Je ne peux donc l'ouvrir qu'en lecture seulement et je n'ai pas accées aux macros.

Pouvez-vous simplement m'envoyer les codes VBA et je les insérerai dans mon fichier?

Encore merci pour votre aide précieuse!!!

Votre ami Frenchyboy
 

DoubleZero

XLDnaute Barbatruc
Bonjour, frenchyboy2015, job75 , le Forum,
Je n'ai accès qu'à la version office 2003. Je ne peux donc l'ouvrir qu'en lecture seulement et je n'ai pas accées aux macros...
Il serait préférable de le préciser dans le "profil".

Voici les codes :
VB:
Option Explicit
Sub Sous_total_insérer()
    Dim c As Range, i As Long
    With Application: .ScreenUpdating = False: .Calculation = xlManual: .EnableEvents = False: End With
    On Error Resume Next
    Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    On Error GoTo 0
    With Range("a:d")
        .RemoveSubtotal
        .Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(4), Replace:=True, SummaryBelowData:=True
        .ClearOutline
    End With
    For Each c In Columns(4).SpecialCells(xlCellTypeFormulas, 23)
        c(, -2).Resize(, 5).Interior.Color = 15395046
        c(, -2).Resize(, 5).Font.Bold = True
    Next
    [E:E] = "" 'RAZ
    [A1].CurrentRegion.Columns(5) = "=Pourcent()": [E1] = "%"
    Columns.AutoFit
    With Application: .EnableEvents = True: .Calculation = xlAutomatic: .ScreenUpdating = True: End With
End Sub

Function Pourcent()
Application.Volatile
Dim i&, j As Variant
Pourcent = ""
i = Application.Caller.Row
'If Cells(i, 1) Like "Total*" Then Exit Function 'si l'on ne veut pas des 100%
j = Application.Match("Total*", Range("A" & i & ":A" & Rows.Count), 0)
On Error Resume Next 'si le calcul n'est pas possible
Pourcent = Cells(i, 4) / Cells(i + j - 1, 4)
End Function
A bientôt
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…