Creer une boucle

Bonjour ,

je dois creer une boucle qui execute cette tache

Sheets("CMD_Globale").Select
Cells(Numero_de_ligne, 2) = "FR Suivi 20 Eco Jack"

Numero_de_ligne = les valeurs qui se trouvent a partir de F2 de l'onglet DS_SHIP

Qui peut m'aider SVP ?

6classeur1.xlsm (55.79 Ko)

Le fichier contient 30 000 lignes en A

Exemple joint

Bonjour,

une proposition avec un travail en "mémoire vive" pour aller plus vite :

Sub LRD()
    Dim I As Long, Tablo, TabloS
    Tablo = Range("Tableau1[Numero_de_ligne]")
    With Sheets("CMD_Globale")
        ReDim TabloS(1 To .Range("A" & Rows.Count).End(xlUp).Row)
        For I = 1 To UBound(Tablo)
            TabloS(Tablo(I, 1)) = "FR Suivi 20 Eco Jack"
        Next I
        .Range("B1").Resize(UBound(TabloS)) = Application.Transpose(TabloS)
    End With
End Sub

On récupère dans Tablo la colonne des lignes.
On dimensionne le TabloS de 1 à nombre de valeur de la colonne A de la feuille CMD.
On boucle sur les valeur du tablo et pour chaque valeur de ligne on y inscrit "FR ...".
Sur la feuille "CMD..." on y transpose le tabloS à partir de la ligne 1 en colonne B sur une hauteur de UBound(TabloS)

le fichier :

1loureed.xlsm (60.78 Ko)

Attention ! pas de gestion d'erreur si sur la colonne N° de ligne il existe des valeur nulles ! mais un test du type If isnumeric(Tablo(i,1)) and Tablo(i,1) <>"" then permettra je pense d'éviter cette erreur.

@ bientôt

LouReeD

Comme ceci :

Sub LRD()
    Dim I As Long, Tablo, TabloS
    Tablo = Range("Tableau1[Numero_de_ligne]")
    With Sheets("CMD_Globale")
        ReDim TabloS(1 To .Range("A" & Rows.Count).End(xlUp).Row)
        For I = 1 To UBound(Tablo)
            If Tablo(I, 1) <> "" And IsNumeric(Tablo(I, 1)) Then TabloS(Tablo(I, 1)) = "FR Suivi 20 Eco Jack"
        Next I
        .Range("B1").Resize(UBound(TabloS)) = Application.Transpose(TabloS)
    End With
End Sub

@ bientôt

LouReeD

C'est impec...

Super rapide en plus

Juste une precision SVP, les données en CMD_Globale ne se trouvent pas dans une feuille , mais dans un classeur distant

du coup

With Sheets("CMD_Globale") , il me faudrait SVP

With CMD_Globale.csv.. je ne connais pas la syntaxe poour dire que c'est un fichier et non pas une feuille

Merci encore

Bonjour,

je ne suis pas vraiment callé avec les fichiers extérieurs...
mieux vaut alors reposer votre question en parlant directement de ce fichier csv.

@ bientôt

LouReeD

Merci bcp, je vais demander sur le forum

Une precision SVP,

Le résultat s'affiche bien en colonne B, est il possible de l'écrire en colonne Z par exemple ?

Bonsoir,

voyez ceci et voyez ce qu'il faut changer : .Range("B1").Resize(UBound(TabloS)) = Application.Transpose(TabloS)

@ bientôt

LouReeD

Merci c'est bien ce que je pensais , voici le code, le souci c'est que cela m'efface toutes les valeurs deja presente en BV !!

Il faudrait garder les valeurs deja presente...

Numero_suivi = Sheets("Suivi_Temp").Range("C2").Value

Dim I As Long, Tablo, TabloS
Tablo = Range("Tableau10[Numero_de_ligne]")
With Sheets("CMD_Globale")

ReDim TabloS(1 To .Range("A" & Rows.Count).End(xlUp).Row)
For I = 1 To UBound(Tablo)

If Tablo(I, 1) <> "" And IsNumeric(Tablo(I, 1)) Then TabloS(Tablo(I, 1)) = Numero_suivi
Next I
.Range("BV1").Resize(UBound(TabloS)) = Application.Transpose(TabloS)

Bonsoir,

alors il faut faire une boucle sur la colonne et tester s'il y a une valeur dans la cellule, si oui on boucle si non on affiche la valeur de TabloS(i,1)

@ bientôt

LouReeD

Rechercher des sujets similaires à "creer boucle"