XL 2016 Décaler groupe cellule (boucle)

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Nicolas JACQUIN

XLDnaute Accro
Supporter XLD
Bonjour à tous,

je plante sur un petit bout de code, je cherche à décaler des valeurs de N-1 à N-2 et ainsi de suite,
pour pouvoir y inserrer les nouvelles, j'ai fait ce code si dessous mais non
je joint egalement un apercu pour mieux comprendre

VB:
Sub cloture_TEST()
Dim i As Integer, j As Integer
Dim derlign_ca As Long

For i = 2 To 13
    For j = 2 To 31
        If Sheets("Archive_CA").Cells(i, j) <> "" Then
            Sheets("Archive_CA").Cells(i, j + 1) = Sheets("Archive_CA").Cells(i, j)
            'Sheets("Archive_CA").Cells(i, j) = ""
        End If
    Next
Next
End Sub

Capture.PNG

Merci
 
Solution
re,
juste une chose,
il faut absolument que je soit sur la page en question sinon j'ai l'erreur "la méthode range de l'objet worksheet à échoué"
j'ai donc rajouté "with" "end with" mais sans effet

VB:
Sub cloture_TEST()
Dim i As Integer, j As Integer, Dc As Integer
Set Ws9 = Sheets("CA")
Set Ws10 = Sheets("Archive_CA")

With Ws10
For i = 2 To 13
    For j = 2 To 31
        If Ws10.Cells(i, j) <> "" Then
            Dc = Ws10.Cells(i, Columns.Count).End(xlToLeft).Column
            Ws10.Range(Cells(i, 2), Cells(i, Dc)).Copy Ws10.Cells(i, 3) 'ligne erreur'
            Ws10.Cells(i, 2) = Ws9.Cells(i, 3)
            Exit For
        End If
    Next
Next
End With

For i = 2 To 13
    Ws9.Cells(i, 4) = Ws9.Cells(i, 3): Ws9.Cells(i, 3) = ""...
Bonjour,
Teste ceci
VB:
Sub cloture_TEST()
Dim i As Integer, j As Integer
Dim Dc%
Dim Ws As Worksheet

Set Ws = Sheets("Archive_CA")
For i = 2 To 13
    For j = 2 To 31
        If Ws.Cells(i, j) <> "" Then
            Dc = Ws.Cells(i, Columns.Count).End(xlToLeft).Column
            Ws.Range(Cells(i, 2), Cells(i, Dc)).Copy Ws.Cells(i, 3)
            Ws.Cells(i, 2) = ""
            Exit For
        End If
    Next
Next
End Sub
 
re,
juste une chose,
il faut absolument que je soit sur la page en question sinon j'ai l'erreur "la méthode range de l'objet worksheet à échoué"
j'ai donc rajouté "with" "end with" mais sans effet

VB:
Sub cloture_TEST()
Dim i As Integer, j As Integer, Dc As Integer
Set Ws9 = Sheets("CA")
Set Ws10 = Sheets("Archive_CA")

With Ws10
For i = 2 To 13
    For j = 2 To 31
        If Ws10.Cells(i, j) <> "" Then
            Dc = Ws10.Cells(i, Columns.Count).End(xlToLeft).Column
            Ws10.Range(Cells(i, 2), Cells(i, Dc)).Copy Ws10.Cells(i, 3) 'ligne erreur'
            Ws10.Cells(i, 2) = Ws9.Cells(i, 3)
            Exit For
        End If
    Next
Next
End With

For i = 2 To 13
    Ws9.Cells(i, 4) = Ws9.Cells(i, 3): Ws9.Cells(i, 3) = ""
    Ws9.Cells(i, 8) = Ws9.Cells(i, 7): Ws9.Cells(i, 7) = ""
Next

Set Ws9 = Nothing
Set Ws10 = Nothing
End Sub
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
698
Réponses
4
Affichages
564
Réponses
8
Affichages
645
Réponses
8
Affichages
268
  • Question Question
Microsoft 365 Erreur UBound
Réponses
4
Affichages
217
Réponses
2
Affichages
412
Réponses
3
Affichages
264
Réponses
10
Affichages
521
Réponses
2
Affichages
180
Retour