Mettre les valeurs des cellules dans une li

Bonjour,

S'il vous plaît aider moi sur ce code

Sub SCRIPTER()
Dim dc As Long, i As Long
dc = Range("A" & Rows.Count).End(xlUp).Row
With Sheets("SCR-XYZ")
    For i = 2 To dc
        Cells(i, 4) = Cells(i, 1)
        Cells(i + 1, 4) = Cells(i, 2)
        Cells(i + 2, 4) = Cells(1, 3)
    Next i
End With
End Sub

COL1 COL2 COL3 COL4 COL5

N° TYPE CODE

1 a,b tr 1 1

2 d,f cm a,b 2

3 b,k ll tr 3

4 z,p ll 2 4

5 r,d ll d,f 5

6 z,e tr cm 6

7 e,e cm 3 7

8 s,m ll b,k 8

9 p,a fr II 9

p,a

CODE

Ce que je cherche c'est avoir un code qui permet d'avoir le resultat sur COL 4 alors que mon code donne le resultats sur COL5

Cordialement,

pb

Salut,

Déjà j’ai mis du temps à comprendre ton

Ce que je cherche c'est avoir un code qui permet d'avoir le resultat sur COL 4 alors que mon code donne le résultats sur COL5

alors que j’obtiens bien en col 4 ce que tu as en colonne 5 justement en faisant ta macro X)

Tu voulais plutôt dire, actuellement la macro met en colonne 4 ce que vous voyez en colonne 5 dans mon screen alors que justement je voudrais voir apparaitre comme résultat ce que j’ai en colonne 4 sur le screen.

Bref, voici mes remarques:

1. En analysant le code en lui même, il y a sur ta dernière ligne cells(1,3), ça serait pas plutôt un cells(i,3) ? sinon cela reprend tout le temps « code » donc aucun intérêt car avant tu passais par i

2. Justement je ne comprends pas ton i +1 et i+2 car tu écrases les valeurs (et pas cells(i+1,4) = cells(i+1,4) + cells(i,2)) et en plus tu ne fais pas un step 3 sur ta boucle donc tu vas forcément écraser les valeurs ! c’est la ligne cells(i,4) = cells(i,1) (soit la reprise de la première colonne qui prédomine dans le code donc normal d’avoir 1=>9 au final ) => actuellement les 2 autres lignes de code ça brasse du vent

Sans passer par des tableaux, si tu as beaucoup de ligne cela va mettre du temps du coup, tu peux utiliser:

Sub SCRIPTER()
Dim dc As Long, i As Long

dc = Range("A" & Rows.Count).End(xlUp).Row

With Sheets("Sheet3")
    j = 2
    For i = 2 To dc
        Cells(j, 4) = Cells(i, 1)
        Cells(j + 1, 4) = Cells(i, 2)
        Cells(j + 2, 4) = Cells(i, 3)
        j = j + 3     

        'a retirer si tu veux que cela continue sur ta colonne 4 ou que cela s'arreter à la dernière ligne comme dans ton exemple
        If j >= dc Then Exit For   

    Next i
End With

End Sub

ECG

En effet,ca se rapproche de ce que je cherche,mais j'ai remarque que ca ne copie pas tous les valeurs jusqu'a la ligne 17,peut etre a cause de

range("A"& rows.count).end(xlUp).Row

alors que normalement je devrai avoir 17*3 51 ligne,que faire

Salut,

Alors la macro fait exactement ce que tu voulais dans ton screen, si ce n'était pas cela ta demande il faut la modifier oui et en effet je t'ai mis en commentaire

'a retirer si tu veux que cela continue sur ta colonne 4 ou que cela s’arrêter à la dernière ligne comme dans ton exemple

Par contre je ne vois pas d'ou viens ton 17*3 ? tu divises en 3 une ligne et tu en as 8 dans ton exemple, si tu enlève la ligne de code de la macro cela t'en fera 8*3 dans ce cas la hmm

ECG

ca marche bien

merci beaucoup

Niquel (on se reverra si tu as 210 000 lignes à traiter je pense pour une solution plus rapide )

N'oublie pas de mettre en résolu le sujet, merci

ECG

en effet je serai dans la galere si c'est le cas ,de toute facon qu'importe le nombre de ligne ,de toute facon je veux simplement exporter cette colonne en .txt,mais je suis interesse si vous me lancez sur un chemin sur les boucles possible ,proposez moi un code ,une sorte d'exemple,une autre methpde de boucle

et comment cliquer sur resolu?

cdlt

Tu dois avoir le bouton de validation pour "accepter cette réponse" la croix verte

Sinon pour aller plus vite il faut passer par des tableaux pour faire les manipulations, je peux regarder pour te faire un exemple si tu veux oué

ECG

validation

avec des tableaux:

Option Base 1
Sub SCRIPTER()
Dim MON_TABLEAU() As Variant
Dim MA_RECOPIE() As Variant
Dim dc As Long, i As Long

dc = Range("A" & Rows.Count).End(xlUp).Row
ReDim MA_RECOPIE((dc - 1) * 3, 1)
MON_TABLEAU = Range("A2:C" & dc).Value

j = 1
For i = LBound(MON_TABLEAU) To UBound(MON_TABLEAU)
    MA_RECOPIE(j, 1) = MON_TABLEAU(i, 1)
    MA_RECOPIE(j + 1, 1) = MON_TABLEAU(i, 2)
    MA_RECOPIE(j + 2, 1) = MON_TABLEAU(i, 3)
    j = j + 3
Next

Range("D2:D" & UBound(MA_RECOPIE) + 1).Value = MA_RECOPIE

End Sub

A tester

ECG

en effet ca marche ,mais il reste beaucoup a faire ,je vais essayer de travailler avec ces variable ,

en core merci bien

Rechercher des sujets similaires à "mettre valeurs"