Bonjour pgz,

Pouvez vous m'aider à faire la même chose que dans cette discussion pour des cellules non numériques ?
Désolée d'ouvrir ce topic de nouveau, je suis nouvelle et je suis un peu perdu dans le vba excel.

Merci pour votre réponse.


Citation Envoyé par pgz Voir le message
Bonsoir.

Il y a plusieurs manières de faire mais si le nombre de lignes est très grand, il vaut mieux choisir une méthode rapide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Sub subCopieTablo()
Dim vtL As Variant 'tableau de lecture colonne BQ feuille 1
Dim vtL2 As Variant 'tableau de lecture colonnes A, B et C feuille 1
Dim lL As Long 'indice ligne
Dim lTotal As Long 'nb de lignes à traiter
Dim vtE As Variant 'tableau à copier dans feuille 2
Dim lE As Long 'indice ligne
 
'efacer le contenu des colonnes A, B, C et D dans feuille2
ThisWorkbook.Worksheets(2).Range("A:D").Clear
 
'rechercher la ligne de la dernière valeur colonne 1 feuille 1
lTotal = ThisWorkbook.Worksheets(1).Range("BQ" & Application.Rows.Count).End(xlUp).Row
 
'charger les tableaux
vtL = ThisWorkbook.Worksheets(1).Range("BQ1:BQ" & lTotal).Value
vtL2 = ThisWorkbook.Worksheets(1).Range("A1:C" & lTotal).Value
vtE = ThisWorkbook.Worksheets(2).Range("A1:D" & lTotal).Value
lE = 1
 
For lL = LBound(vtL, 1) To UBound(vtL, 1)
    If IsNumeric(vtL(lL, 1)) Then
        vtE(lE, 1) = vtL2(lL, 1) 'colonne A dans A
        vtE(lE, 2) = vtL2(lL, 2) 'colonne B dans B
        vtE(lE, 3) = vtL2(lL, 3) 'colonne C dans C
        vtE(lE, 4) = vtL(lL, 1) 'colonne BQ dans D
        lE = lE + 1
    End If
Next lL
 
ThisWorkbook.Worksheets(2).Range("A1:D" & lTotal).Value = vtE
 
vtE = Null
vtL = Null
vtL2 = Null
End Sub
A mettre au point.

Cordialement,

PGZ