Insertion colonnes puis lignes suivant conditions.

saphir78

XLDnaute Nouveau
Bonjour à tous,
je suis nouveau sur le forum et j'espère y trouver mon bonheur.
je débute sur les macros VBA.

j'ai un tableau excel (voir pièces jointes) et j'aimerais par une macro y ajouter des colonnes à des endroits précis. Ensuite pour chaque ligne, regarder la donnée présente dans la colonne "type de câble" et fonction de la valeur, ajouter en dessous un certain nombre de ligne et y recopier le contenu de la ligne existante.

le fichier joint sera beaucoup plus parlant je pense.

Merci d'avance pour votre aide.
David
 

Pièces jointes

  • Testmacro.xls
    23 KB · Affichages: 56
  • Testmacro.xls
    23 KB · Affichages: 57
  • Testmacro.xls
    23 KB · Affichages: 57
C

Compte Supprimé 979

Guest
Re : Insertion colonnes puis lignes suivant conditions.

Bonjour saphir78 et bienvenue sur ce forum

je débute sur les macros VBA.
Nous avons tous débutés un jour sur VBA

Pour commencer, tu peux utiliser l'enregistreur de macros
Menu Outils -> Macro -> Nouvelle macro
Enregistrer dans : Ce classeur

Tu effectues les manipulations adéquates et au fur et à mesure, le code est inscrit
Ensuite il faut arrêter l'enregistreur de macro
Menu Outils -> Macro -> Arrêter l'enregistrement

Il ne reste plus qu'à modifier le code avec des boucles

A+
 

saphir78

XLDnaute Nouveau
Re : Insertion colonnes puis lignes suivant conditions.

J'ai avancé un peu sur mon pb. j'ai réussi a faire une macro qui me rajoute les lignes comme il faut mais je bloque sur le copier coller.
il faut que la macro me copie la ligne et la colle sur les lignes ajoutées.
voilà ma macro pour le moment :

Private Sub CommandButton1_Click()
i = 2
j = 0
'ajout du nombre de ligne en fonction des brins du câble'
While Range("A" & i).Value <> ""
If Range("R" & i).Value = 1050 Then
j = 1
Rows(i + 1).Resize(j).Insert Shift:=xlDown
Else
If Range("R" & i).Value = 1051 Then
j = 2
Rows(i + 1).Resize(j).Insert Shift:=xlDown
Else
If Range("R" & i).Value = 1052 Then
j = 3
Rows(i + 1).Resize(j).Insert Shift:=xlDown
Else
End If
End If
End If
i = i + j + 1
Wend
End Sub

Merci d'avance
 
C

Compte Supprimé 979

Guest
Re : Insertion colonnes puis lignes suivant conditions.

Salut Saphir78,

Très bien, mais je ne pense pas que ce soit l'enregistreur de macro qui t'a donné ce code ;)

Mieux vaut éviter les While ... Wend, quand on peut (risque de boucle infinie)
Tu peux utilser une boucle For ... Next mais en partant de la fin de ton tableau

Voici le code modifié
Code:
Sub AjoutLigne()
  Dim DLig As Long, Lig As Long, Sht As Worksheet
  Dim J As Integer
  ' Définir la feuille de travail dans la variable objet 'Sht'
  Set Sht = Sheets("Feuil1")
  ' Trouver la dernière remplie ligne du tableau en partant de la fin
  ' = CTRL + FLECHE HAUT
  DLig = Sht.Range("G" & Rows.Count).End(xlUp).Row
  J = 0
  ' Pour chaque ligne en partant de la dernière vers la 3ème
  ' Puisque nous insérons des lignes
  For Lig = DLig To 3 Step -1
    ' Selon la valeur du type de cable
    ' On insert J lignes
    If Sht.Range("R" & Lig).Value = 1050 Then J = 1
    If Sht.Range("R" & Lig).Value = 1051 Then J = 2
    If Sht.Range("R" & Lig).Value = 1052 Then J = 3
    If J <> 0 Then
      Sht.Rows(Lig + 1).Resize(J).Insert Shift:=xlDown
      J = 0 ' Reset de la valeur de J au cas ou
    End If
  Next Lig
  ' Vider la variable objet
  Set Sht = Nothing
End Sub

A+
 

Discussions similaires

Réponses
3
Affichages
280

Statistiques des forums

Discussions
312 370
Messages
2 087 689
Membres
103 639
dernier inscrit
NIEMASAFI