Positionnement alterné sur ligne paire et impaire
m.speciel
Messages postés
1
Statut
Membre
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je viens solliciter votre aide sur un soucis que j'ai pour organiser une feuille excel 2016:
En effet je doit positionner des lignes contenant des informations sur des lignes paires ou impaires suivant un caractère comme condition:
Les lignes contenant le caractère D dans la colonne B doivent se positionner sur les lignes impaires et les lignes ne contenant pas le caractère D sur les lignes paires.
Mais il faut aussi que si il n'y a plus que des lignes sans caractère D (ou avec) qu'elles se mettent a la suite du reste sans lignes vides.
Un exemple fait "a la main " pour illustrer mon propos.
Feuille de départ

Résultat attendu

Merci d'avance pour votre aide
Je viens solliciter votre aide sur un soucis que j'ai pour organiser une feuille excel 2016:
En effet je doit positionner des lignes contenant des informations sur des lignes paires ou impaires suivant un caractère comme condition:
Les lignes contenant le caractère D dans la colonne B doivent se positionner sur les lignes impaires et les lignes ne contenant pas le caractère D sur les lignes paires.
Mais il faut aussi que si il n'y a plus que des lignes sans caractère D (ou avec) qu'elles se mettent a la suite du reste sans lignes vides.
Un exemple fait "a la main " pour illustrer mon propos.
Feuille de départ
Résultat attendu
Merci d'avance pour votre aide
2 réponses
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour, suggestion (speco étant la feuille de départ, specn la feuille de destination):Option Explicit Private Sub specpi() Dim sho As Worksheet, shn As Worksheet Dim lcur As Long, nextD As Long, nextO As Long Set sho = ThisWorkbook.Sheets("speco") Set shn = ThisWorkbook.Sheets("specn") lcur = 2 nextD = getnext(sho, 1, True) nextO = getnext(sho, 1, False) Do While nextD <> 0 Or nextO <> 0 If nextD = 0 Then sho.Rows(nextO).Copy shn.Rows(lcur) nextO = getnext(sho, nextO, False) Else If nextO = 0 Then sho.Rows(nextD).Copy shn.Rows(lcur) nextD = getnext(sho, nextD, True) Else If lcur Mod 2 = 0 Then sho.Rows(nextO).Copy shn.Rows(lcur) nextO = getnext(sho, nextO, False) Else sho.Rows(nextD).Copy shn.Rows(lcur) nextD = getnext(sho, nextD, True) End If End If End If lcur = lcur + 1 Loop End Sub Private Function getnext(sh As Worksheet, lig As Long, D As Boolean) As Long getnext = lig + 1 Do While (sh.Cells(getnext, 1) <> "") And (InStr(sh.Cells(getnext, 2), "D") > 0) <> D getnext = getnext + 1 Loop If sh.Cells(getnext, 1) = "" Then getnext = 0 End If End Function -
Bonjour
Plutôt qu'une image, peux tu envoyer un bout de ton fichier sur cjoint.com et joindre le lien obtenu à ton prochain message. N'oublies pas d'y ajouter des explications et des exemples de résultat attendu
1) Tu vas dans https://www.cjoint.com/
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
en bleu souligné ; tu le sélectionnes et tu fais "Copier"
5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse tu fais "Coller".
Cdlmnt