Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
je suis à la recherche d'une macro excel permettant d'insérer des lignes sous conditions
Voila mon problème :
j'ai de F2 à F200 une série de date déja triée par ordre chrono. Je souhaite insérer une ligne dès que la date de la ligne suivante est différente.
Je souhaite aussi pour chaque ligne insérée :
- recopier la date du dessous dans la ligne insérer mais en colonne i
- En colonne A de le ligne insérer ajouter un texte "toto" par exemple
Sub PropositionDeMacro()
'Macro réalisée par Excel-lent le 17/01/2011
Dim LigneTotal As Long
Dim LigneAnalysé As Long
LigneTotal = [F65536].End(xlUp).Row
For LigneAnalysé = LigneTotal To 3 Step -1
If Cells(LigneAnalysé, 6) <> Cells(LigneAnalysé - 1, 6) Then
Rows(LigneAnalysé).Insert
Cells(LigneAnalysé, 9) = Cells(LigneAnalysé + 1, 6)
End If
Next LigneAnalysé
End Sub
Evidement, avant de lancer la macro (ou après), bien penser à mettre ta fameuse colonne "I" au format date 😉
Effectivement j'ai ajouté ceci et ca a fonctionné.
Code:
Cells(LigneAnalysé, 1) = "toto"
Pourrais je abuser en demandant 2 choses.... 🙂
Je souhaite toujours dans ma ligne ajouté fusionner les cellule M à AT (13 à 46)
et aussi par exemple colorier d'une couleurs les cellule des colonnes B et C de la ligne ajoutée.
J'ai essayé de trouver un moyen d'ajouter ceci dans le que tu m'a donné mais galère galère...
Je comprend que tu veux fusionner l'ensemble de toutes les cellules [AG109:AM109], bref faire de ces 7 cellules : une seule. Au lieu des 33 ci-dessus (46-13=33)
Qu'elle est la bonne réponse?
A priori, je constate que tu as utilisé l'enregistreur de macro et essayé de comprendre le code, pour pouvoir ainsi l'intégrer dans ton code? Excellente méthode.
Pourquoi avoir sélectionner AG109:AM109??? Alors que tu parles de M...:AT...???
Pour fusionner les cellules ceci suffit :
Code:
Range("AG109:AM109").Select
Selection.Merge
et cela peut être raccourci de la façon suivante :
Code:
Range("AG109:AM109").Merge
Mais dans l'affaire, tu perds deux "informations" : le centrage horizontal et vertical dans la cellule fusionnée.
Bref, pour ne rien perdre, tu peux simplifier ton code "fusion des cellules" de la façon suivante :
Code:
Range("AG109:AM109").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Merge
End With
Pour ces "informations", tu as choisi les valeurs par défaut, donc que tu mettes ou non ces lignes dans ta macro cela ne changera rien. Seul différence, sans ces lignes ton code sera plus clair et son exécution plus rapide.
2/ Le coloriage de tes cellules :
La partie de ton code correspondant à cela est cette partie :
3/ Supplément :
Pour réussir à adapter tout cela à ta macro, il te faut connaître ceci :
Pour indiquer le nom d'une cellule il existe trois grandes solutions : Range -> avantage de cette solution, c'est la plus facile à comprendre. Lorsqu'on voit dans le code Range("A1"), on voit tout de suite qu'on parle de la cellule A1 Cells -> moins facile à comprendre, car elle s'écrit ainsi Cells(numéro de la ligne, numéro de la colonne). Bref, l'ordre est inversé, on parle de la colonne en second. Deuxième difficulté, la colonne, au lieu d'être représenté par une lettre est indiqué par son numéro. [] -> tout aussi facile à comprendre que la solution "Range", mais plus courte à écrire
Lorsqu'on débute et qu'on souhaite remplacer le numéro de la colonne ou de la ligne, la solution "Cells" est la plus facile, car on remplace le numéro par une variable. Variable qu'on peut fixer en début de macro et/ou faire changer grâce à l'utilisation de boucles (comme démontré dans mon précédent post : n° #2)
Mais on peut tout aussi bien faire cela avec la solution "Range". Pour changer le numéro de la ligne, il suffit d'écrire :
Code:
NuméroLigne = 5
Range("A" & NuméroLigne )
Ce qui revient à écrire Range("A5")
Mais si tu veux écrire Range("A5") puis Range("A6") puis Range("A7") ... puis Range("A15")
Alors tu écriras :
Code:
For NuméroLigne = 5 To 15
Range("A" & NuméroLigne )
'Ici tu insérera ton morceau de macro qui diras quoi faire avec cette fameuse cellule
Next NuméroLigne
Mais comme tu le constate, quand il s'agit de remplacer le nom de colonne, ça se complique un peu!!!! Autant rajouter "+1" à un nombre est facile, autant rajouter "+1" à une lettre est une autre pair de manche (compliqué mais possible)
C'est pour cela que la plupart préfère utiliser "Cells"
C'est plus clair? Je te laisse ingurgiter tout cela et essayer de le mettre en application dans ta macro?
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD