Votre question
Résolu

Macro excel : insertion de cellules dans un tableau

Tags :
  • Microsoft Excel
  • Programmation
Dernière réponse : dans Programmation
9 Mai 2012 15:57:30

Bonjour à tous,

je suis totalement débutant dans l'utilisation des macros.
J'aurais besoin de créer une macro me permettant d'insérer des cellules vides dans un tableau, sous condition.

Si la cellule (Ligne X, Colonne Y) est vide alors je voudrais insérer des cellules vides en Ligne X, Colonne Y+1, Y+2 et Y+3
mais si la cellule (Ligne X, Colonne Y) contient du texte, je passe à la ligne du dessous (Ligne X+1).
Et ainsi de suite jusqu'en bas de mon tableau qui fait presque 5000 lignes !
J'ai commencé à la main et c'est trop fastidieux !

Merci d'avance pour votre aide.

Autres pages sur : macro excel insertion cellules tableau

10 Mai 2012 13:39:15

Merci beaucoup pour votre réponse.
J'ai essayé d'utiliser les éléments que j'ai trouvé sur les sites que vous m'avez conseillé mais comme je suis ultra débutante et que je ne connais rien au langage VB, je n'ai pas réussi à obtenir de macro qui fonctionne.

Voici un exemple de ce que je voudrais faire :

Tableau de départ :

Colonne A B C " D " E F G
Ligne 1 : 1 a 1 "J167" 1 a 1
Ligne 2 : 1 a 2 "vide" 1 a 2
Ligne 3 : 1 a 3 " vide" 1 a 3
Ligne 4 : 1 b 1 " F1987 " 1 b 1
Ligne 5 : 1 b 2 "F1987" 1 b 2


Tableau d'arrivée :

Colonne A B C " D " E F G
Ligne 1 : 1 a 1 "J167" 1 a 1
Ligne 2 : 1 a 2 "vide"
Ligne 3 : 1 a 3 " vide"
Ligne 4 : 1 b 1 " F1987 " 1 a 2
Ligne 5 : 1 b 2 "F1987" 1 a 3
Ligne 6 : 1 b 1 " F1987 " 1 b 1
Ligne 7 : 1 b 2 "F1987" 1 b 2

Voilà, peut-être que cela peut expliciter mon problème.
J'espère qu'une bonne âme pourra m'aider.

Merci d'avance à tous.





OmaR a dit :
Salut,

Pour boucler sur toutes les lignes : http://support.microsoft.com/kb/299036/fr
Pour insérer des colonnes : http://support.microsoft.com/kb/291305/fr

Bon courage ;) 


m
0
l
Contenus similaires
a c 232 L Programmation
10 Mai 2012 13:43:05

Fais voir ce que tu as déjà fait comme code, que j'essaie de modifier ça un peu
m
0
l
10 Mai 2012 13:50:03

J'ai effacé la plupart des macros que j'ai essayé de faire.
J'ai juste celle-là qui est passée à travers.

  1. Sub Ajout()
  2.  
  3. ligne = ActiveCell.Row
  4. colonne = ActiveCell.Column
  5. adresse = ActiveCell.Address
  6.  
  7. Dim l As Long
  8. For l = Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
  9. If Cells(l, "D").Value = "" _
  10. And Cells(l, "E").Value = "" Then
  11. adresseX = Cells(ligne, colonne + 1).Address
  12. Range(adresseX).Select
  13. Selection.Insert Shift:=xlDown
  14. adresseX1 = Cells(ligne, colonne).Address
  15. Range(adresseX).Cells = Range(adresseX1).Value
  16. End If
  17.  
  18. Next l
  19.  
  20. End Sub





OmaR a dit :
Fais voir ce que tu as déjà fait comme code, que j'essaie de modifier ça un peu


m
0
l
a c 232 L Programmation
10 Mai 2012 14:32:53

Hmm, je suis pas sûr de comprendre exactement ce que tu veux en fait.
Parce qu'il ne me semble pas que ce que tu décris au départ est la même chose que ton exemple.

Tu as 5 lignes au départ et il t'en faut 7 à l'arrivée ?
m
0
l
10 Mai 2012 14:43:33

Non tu as raison j'ai fait une erreur dans mon tableau, je veux aussi 5 lignes à l'arrivée (enfin dans mon exemple parce que dans mon tableau "réel" j'ai 4681 lignes à traiter.

Tableau de départ :

Colonne A B C " D " E F G
Ligne 1 : 1 a 1 "J167" 1 a 1
Ligne 2 : 1 a 2 "vide" 1 a 2
Ligne 3 : 1 a 3 " vide" 1 a 3
Ligne 4 : 1 b 1 " F1987 " 1 b 1
Ligne 5 : 1 b 2 "F1987" 1 b 2


Tableau d'arrivée :

Colonne A B C " D " E F G
Ligne 1 : 1 a 1 "J167" 1 a 1
Ligne 2 : 1 a 2 "vide"
Ligne 3 : 1 a 3 " vide"
Ligne 4 : 1 b 1 " F1987 " 1 a 2
Ligne 5 : 1 b 2 "F1987" 1 a 3

J'ai un exemple en fichier excel mais je ne sais pas si je peux le joindre ici.


OmaR a dit :
Hmm, je suis pas sûr de comprendre exactement ce que tu veux en fait.
Parce qu'il ne me semble pas que ce que tu décris au départ est la même chose que ton exemple.

Tu as 5 lignes au départ et il t'en faut 7 à l'arrivée ?


m
0
l

Meilleure solution

a c 232 L Programmation
10 Mai 2012 15:02:53

Quelque chose comme ça doit pouvoir le faire :

  1. Sub Ajout()
  2.  
  3. Dim l As Long
  4. For l = 1 To Range("A1").End(xlDown).Row Step 1
  5. If Cells(l, "D").Value = "" Then
  6. Range(Cells(l, "E"), Cells(l, "G")).Select
  7. Selection.Insert Shift:=xlDown
  8. End If
  9. Next l
  10.  
  11. End Sub
partage
10 Mai 2012 15:45:49

Je viens de tester et ça marche !
Un Grand Merci.



OmaR a dit :
Quelque chose comme ça doit pouvoir le faire :

  1. Sub Ajout()
  2.  
  3. Dim l As Long
  4. For l = 1 To Range("A1").End(xlDown).Row Step 1
  5. If Cells(l, "D").Value = "" Then
  6. Range(Cells(l, "E"), Cells(l, "G")).Select
  7. Selection.Insert Shift:=xlDown
  8. End If
  9. Next l
  10.  
  11. End Sub


m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS