Copie d'un nombre sur un code déjà existant
Résolu
Coo76
-
f894009 Messages postés 17417 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17417 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je dispose d'un code VBA qui me transfère un texte d'un onglet à l'autre si la valeur à gauche est non nul.
Maintenant mon problème est que j'aimerais transféré le nombre également sur l'autre onglet, quelqu'un pense pouvoir m'aider ?
le code est le suivant :
je dispose d'un code VBA qui me transfère un texte d'un onglet à l'autre si la valeur à gauche est non nul.
Maintenant mon problème est que j'aimerais transféré le nombre également sur l'autre onglet, quelqu'un pense pouvoir m'aider ?
le code est le suivant :
Option Explicit
Public Const FR = "Résultat"
'Public Const coCodFR = 2
Public Const lidebFR = 3
Public Const FC = "Codes"
Public Const coCodFC = 1
Public Const lidebFC = 2
' copie le tableau où les codes sont en colonne co
Public Sub Kopie(co As Long)
Dim liFR As Long, lifinFR As Long, TC(), s As String, nbCod As Long, q As Long, lifinFC As Long
With Sheets(FR)
lifinFR = .Cells(Rows.Count, co).End(xlUp).Row
If lifinFR < lidebFR Then
MsgBox "pas de codes dans le tableau colonne " & co
Exit Sub
End If
nbCod = 0
For liFR = lidebFR To lifinFR
s = .Cells(liFR, co).Value
q = .Cells(liFR, co + 1)
If q <> 0 Then
nbCod = nbCod + 1
ReDim Preserve TC(1 To nbCod)
s = s
TC(nbCod) = s
End If
Next liFR
End With
With Sheets(FC)
lifinFC = .Cells(Rows.Count, coCodFC).End(xlUp).Row
.Cells(lifinFC + 1, coCodFC).Resize(nbCod, 1) = Application.Transpose(TC)
End With
End Sub
' pour copier les 3 tableaux
' appel à Kopie avec les colonnes 2, 6, 10
Public Sub OK()
Call RAZ
Call Kopie(2)
Call Kopie(6)
Call Kopie(10)
End Sub
' nettoyage de la feuille Codes
Public Sub RAZ()
Dim lifinFC As Long
With Sheets(FC)
lifinFC = .Cells(Rows.Count, coCodFC).End(xlUp).Row
If lifinFC < lidebFC Then lifinFC = lidebFC
.Range(.Cells(lidebFC, coCodFC), .Cells(lifinFC, coCodFC + 1)).ClearContents
End With
End Sub
3 réponses
-
Bonjour,
si la valeur à gauche est non nul. Pour moi, dans votre code c'est la colonne de droite, mais c'est vous qui voyez.
Utilisez un deuxieme tableau pour memoriser les valeurs de cette colonne -
Bonjour,
Salutations f894009.
Une autre solution consiste à utiliser un tableau à deux dimensions :
Public Sub Kopie(co As Long) Dim liFR As Long, lifinFR As Long, TC(), s As String, nbCod As Long, q As Long, lifinFC As Long With Sheets(FR) lifinFR = .Cells(Rows.Count, co).End(xlUp).Row If lifinFR < lidebFR Then MsgBox "pas de codes dans le tableau colonne " & co Exit Sub End If nbCod = 0 For liFR = lidebFR To lifinFR s = .Cells(liFR, co).Value q = .Cells(liFR, co + 1) If q <> 0 Then nbCod = nbCod + 1 ReDim Preserve TC(1 To 2, 1 To nbCod) 's = s 'LIGNE INUTILE TC(1, nbCod) = s TC(2, nbCod) = q End If Next liFR End With With Sheets(FC) lifinFC = .Cells(Rows.Count, coCodFC).End(xlUp).Row .Cells(lifinFC + 1, coCodFC).Resize(nbCod, 2) = Application.Transpose(TC) End With End Sub
🎼 Cordialement,
Franck 🎶 -