XL 2016 Besoin d'une macro :création colonne+formule de test

bnolwalid

XLDnaute Junior
Bonjour tout le monde,
J'aurais besoin de votre aide pour créer une macro qui traite les données d'un fichier Excel.
Voici le besoin : à partir d'un tableau excel et à partir de la colonne D et après toutes les 2 colonnes:
- insérer une colonne
- la nommer Diff1/Diff2/Diff3... jusqu'a la fin des colonnes
- réaliser un test avec la fonction Si des 2 colonnes précédentes : dans la première colonne insérée (E) : si(C2=D2;"OK";NOK"), pour la deuxième colonne insérée qui devient la colonne H : si(F2=G2;"OK";NOK")...
- Contrainte : la dimension des données peut varier en terme de ligne et de colonne mais on réalise toujours le premier test aprés les deux colonnes Cet D et ce toutes les 2 colonnes (voir exp en PJ).

N'hésitez pas si ce n'est pas clair

Merci d'avance pour votre aide

Bonn journée
 

Pièces jointes

  • Testv1.xlsx
    11 KB · Affichages: 5

Dranreb

XLDnaute Barbatruc
Bonjour.
VB:
Sub ColonnesDiff()
   Dim Rng As Range, C As Integer
   Set Rng = ActiveSheet.[A2].CurrentRegion
   C = 5
   Do
      If Rng(1, C).Value <> "Diff" & (C - 5) \ 3 + 1 Then
         Rng.Columns(C).Insert
         Rng(1, C).Value = "Diff" & (C - 5) \ 3 + 1
         Rng(2, C).Resize(Rng.Rows.Count - 1).FormulaR1C1 = "=IF(RC[-2]=RC[-1],""OK"",""NOK"")"
         End If
      C = C + 3: Loop Until C > Rng.Columns.Count + 1
   End Sub
 

bnolwalid

XLDnaute Junior
Bonjour.
VB:
Sub ColonnesDiff()
   Dim Rng As Range, C As Integer
   Set Rng = ActiveSheet.[A2].CurrentRegion
   C = 5
   Do
      If Rng(1, C).Value <> "Diff" & (C - 5) \ 3 + 1 Then
         Rng.Columns(C).Insert
         Rng(1, C).Value = "Diff" & (C - 5) \ 3 + 1
         Rng(2, C).Resize(Rng.Rows.Count - 1).FormulaR1C1 = "=IF(RC[-2]=RC[-1],""OK"",""NOK"")"
         End If
      C = C + 3: Loop Until C > Rng.Columns.Count + 1
   End Sub
Bonjour Dranreb,

Tout d'abord je tiens à te remercier pour ta dispo et ta réactivité.
La macro marche à merveille sur le fichier que j'ai mis comme exemple mais malheureusement quand je l'applique sur un autre fichier ( voir PJ), j'ai ce message d'erreur :

[ATTACH type="full"]1163125[/ATTACH]

Pourrais-tu stp regarder car j'y comprends rien?
Merci encore une fois de ton aide
 

Pièces jointes

  • 1676041426341.png
    1676041426341.png
    20.3 KB · Affichages: 18
  • Testv2.xlsm
    907.8 KB · Affichages: 3

bnolwalid

XLDnaute Junior
J'ai pu le solutionner en mettant Rng.Columns(C).EntireColumn.Insert
au lieu de Rng.Columns(C).Insert
Mais je ne sais pas trop pourquoi ça plantait.
Hello Danreb,
La macro fonctionne très bien.
Merci infiniment pour ton coup de main.
Pourrais-je te demander un dernier service, est ce possible d'imposer une mise en forme différente aux colonnes Diff crées : par exemple les coloriées en jaune ?
Crdlmt
 

Discussions similaires

Statistiques des forums

Discussions
314 651
Messages
2 111 561
Membres
111 201
dernier inscrit
netcam