Ranger mes colonnes par dizaine en respectant mes lignes

Bonjour

je voudrais faire ce-ci:

colonne c2 de 0 à 9

colonne c3 de 10 à 19

colonne c4 de 20 à 29

colonne c5 de 30 à 39

colonne c6 de 40 à 49

tout en respectant mes lignes:

03 14 27 37 53

19 49 63 76 89

08 36 41 77 85

et je voudrais obtenir ca:

03 14 27 37 53

19 49 63 76 89

08 36 41 77 85

sachant que j'ai un + de 50 000 lignes.

je pensais qu'un formule aurai été une solution mais je n'ai pas assez d’expérience dans ce domaine

Bonjour,

mets-nous un classeur exemple de ce tu as et de ce que tu veux avoir et une explication des règles à utiliser pour passer de l'un à l'autre.

j'ai un peu du mal a transférer les dossiers

47exemple.xlsx (9.94 Ko)

Bonjour,

d'habitude j'aime bien les devinettes, mais-là je suis dépassé.

j'ai compris que tu voulais ton résultat en colonnes A à J, sans doute sur base des colonnes N à A. mais sur base de ton classeur, impossible pour moi de comprendre comment faire.

merci de mettre quelques explications

je suis désolée de ne pas me faire comprendre

j'ai enregistré des cartes de loto sous pdf et j'ai pu, par le biais d'un logiciel en ligne les mettre sous excel mais du coup tout mes chiffres sont décalés

je vous remets une petite partie de ce que j'ai a la base

25exemple.xlsx (10.18 Ko)

re-bonjour,

merci pour tes explications !

voici ce que propose ma boule cristal

Sub aargh()

With Sheets("feuil1")
    dl = .Cells(Rows.Count, 2).End(xlUp).Row + 5
    For i = dl To 1 Step -1
        If .Cells(i, 2) < 100 Then
            dc = .Cells(i, Columns.Count).End(xlToLeft).Column
            If dc = 1 Then
            Rows(i).Delete shift:=xlUp
            Else
            t = .Cells(i, 1).Resize(, dc)
            .Cells(i, 1).Resize(, dc).ClearContents
            For j = dc To 1 Step -1
                n = t(1, j)
                col = Int(n / 10) + 2
                .Cells(i, col) = n
            Next j
            End If
        End If
    Next i
    End With
End Sub

re bonjour

pour le coup c moi qui vous suit plus

sélectionner ça je sais faire mes le reste ....

bonjour,

il s'agit d'une solution basée sur une macro. j'ai mis la macro dans ton fichier.

Sélectionner la feuille à ranger et lancer la macro via alt-F8

36travichon.xlsm (14.98 Ko)

je suis un boulet

je désactive le mode protéger mais il dit que macros désactivé aussi...

Bonjour,

il y a une double protection pour les fichiers téléchargés.

1) autoriser les modifications

2) autoriser les macros

bon ben je n'y arrive pas ....

bonsoir

après une longue après midi d'hier a essayer et réessayer je commence un peu mieux a comprendre "macro"

du coup pour faire plus claire j'ai compris qu'avec l'aide macro je pouvais me simplifier drôlement plein de choses

je vous joins un excel plutôt 2

un avec se que j'ai en base réelle et l'autre avec ce que je veux obtenir

veuillez encore m'excuser je n'ai pas enlever les intitulés

merci pour votre aide

19cartes-1-498.xlsm (188.42 Ko)
21resultat-final.xlsx (10.31 Ko)

Bonjour,

voici la macro et le fichier mis à jour.

lancer la macro via alt-F8. (attention cela prend plusieurs secondes pour produire le résultat).

30cartes-1-498.xlsm (202.38 Ko)

super !!

vraiment merci beaucoup.

juste que j'ai d'autre classeur du même style donc j'ai copié dans une autre page et lancer la macro et c magique.

encore merci , même si j'ai pas tout compris a la macro.

Bonjour,

macro commentée

Sub aargh()
    Application.ScreenUpdating = False
    With Sheets("données") ' feuille source
        Set wst = Sheets("grilles") 'feuille destination
        dl = .Cells(Rows.Count, 1).End(xlUp).Row + 2 'nombre de lignes de la source
        k = 1
        For i = 1 To dl 'on parcourt toutes les lignes de la source, i n° de ligne en cours
            dc = .Cells(i, Columns.Count).End(xlToLeft).Column 'dernière colonne de la ligne en cours
            If dc > 1 Then 's'il y a des données sur la lignes
                If ctrl = 0 Then ' nouvelle fiche
                    k = k + 5 ' k pointeur de ligne sur destination
                    wst.Range("A1:K5").Copy wst.Cells(k, 1) 'on copie le modèle en ligne k
                    wst.Cells(k + 1, 2).Resize(3, 10).ClearContents 'on efface les numéros copiés avec le modèle
                    li = 1 'li numéro de ligne sur la fiche
                End If
                ctrl = ctrl + 1 ' compteur de lignes de la source correspondant à une fiche
                Select Case ctrl
                Case 1, 3, 5 'lignes qui contiennent des numéros
                    For j = 1 To dc 'on parcourt les cellules de la ligne
                        n = .Cells(i, j) 'numero trouvé dans la cellule
                        If n <> "" Then
                            col = Int(n / 10) + 2 'on calcule le numéro de colonne dans laquelle mettre le numéro trouvé
                            wst.Cells(k + li, col) = n 'on met le numero en ligne k+li, colonne col
                        End If
                    Next j
                    li = li + 1
                Case 4 'ligne qui contient le numéro de fiche
                    wst.Cells(k, 1) = .Cells(i, 1)
                End Select
            Else
                ctrl = 0
            End If
        Next i
    End With
    Application.ScreenUpdating = True
End Sub
Rechercher des sujets similaires à "ranger mes colonnes dizaine respectant lignes"