Simplifier le code VBA

Bonjour à tous

J'ai une plage sur une ligne où la dernière colonne de cette ligne est variable.

Je cherche à copier la valeur de chaque cellule non vide de cette ligne (en rouge dans le code) dans d'autres colonnes qui sont disjointes (en bleu dans le code)

Pour le moment, voici un code simplifié du code que j'ai et qui fonctionne bien... mais long car ma ligne de départ comporte au maximum 57 colonnes...

Donc j'aimerai simplifier... et que le code s'arrête quand toutes les cellules non vides de départ ont été copier dans les colonnes d'arrivée qui ont un pas de 3....

Merci d'avance

'Copier sur colonne disjointe si cellule de la plage de départ non vide

For j = 23 To 41

If Cells(5, 2) <> Empty Then

Cells(3, 23).Value = Cells(5, 2).Value

Else

Exit For

End If

If Cells(5, 3) <> Empty Then

Cells(3, 26).Value = Cells(5, 3).Value

Else

Exit For

End If

If Cells(5, 4) <> Empty Then

Cells(3, 29).Value = Cells(5, 4).Value

Else

Exit For

End If

If Cells(5, 5) <> Empty Then

Cells(3, 32).Value = Cells(5, 5).Value

Else

Exit For

End If

If Cells(5, 6) <> Empty Then

Cells(3, 35).Value = Cells(5, 6).Value

Else

Exit For

End If

If Cells(5, 7) <> Empty Then

Cells(3, 38).Value = Cells(5, 7).Value

Else

Exit For

End If

If Cells(5, 8) <> Empty Then

Cells(3, 41).Value = Cells(5, 8).Value

Else

Exit For

End If

Next j

Bonjour,

tu devrais envoyer un fichier d'exemple court mais avec la même structure que ton original ...

Ca peut aider à t'aider

Bonjour Patrick

voilà un fichier test "bateau"... avec lequel le code tel que je l'ai écrit fonctionne...

10classeur1.xlsm (18.66 Ko)

Merci d'avance

Bonjour, Salut patrick1957,

A tester :

Sub test()
    i = 2
    For j = 23 To 41 Step 3
        If Cells(5, i) <> "" Then
            Cells(3, j).Value = Cells(5, i).Value
        End If
        i = i + 1
    Next
End Sub

Bonjour Raja

Merci beaucoup cela fonctionne très bien

j'ai cherché une solution qui était beaucoup plus compliquée...

Question complémentaire :

parfois je n'ai pas besoin de copier les 3 dernières données de ma ligne de départ....

est-ce possible d'inclure cela dans le code ?...

pour le moment je supprime manuellement les colonnes en question... mais si je peux éviter de le faire ...

Quoiqu'il en soit merci pour cette solution

Re,

Je n'ai pas tout compris, mais il faut jouer sur ça, non ?

For j = 23 To 41 Step 3

en le modifiant à 32

Mais comme je ne sais pas quand et comment tu décides de faire jusqu'au 41 ou 32

Re Raja

C'était tellement simple... que je n'y ai pas pensé...

Encore merci pour l'aide...

Très belles fêtes de nouvel an

Rechercher des sujets similaires à "simplifier code vba"