Où est l'erreur (cells.value=range.value)

Bonjour à tous,

Lorsque j'execute la macro ci-dessous, la ligne

Worksheets("BP").Cells(derlig2 + 1, 3).Value = ActiveSheet.Range(Cells(i, 1) & ":" & Cells(i, 7)).Value

est en erreur. Avez vous une idée ?

Sub Conca()

With ActiveSheet

For i = 1 To 52
derlig2 = Worksheets("BP").Columns("A").Find("*", , , , , xlPrevious).Row

If Cells(i, 20) <> "" And Cells(i, 1) <> "" Then
Worksheets("BP").Cells(derlig2 + 1, 3).Value = ActiveSheet.Range(Cells(i, 1) & ":" & Cells(i, 7)).Value
Worksheets("BP").Cells(derlig2 + 1, 10).Value = ActiveSheet.Cells(i, 20).Value
End If

Next i

End With
End Sub

Merci par avance

Bonjour jahman,

Si tu indiques "With ActiveSheet", tu n'as plus besoin de faire référence a ta feuille mais tu dois mettre un "." devant les "range" ou "cells" qui appartiennent a ton bloc "With"

Sub Conca()

With ActiveSheet

For i = 1 To 52

derlig2 = Worksheets("BP").Columns("A").Find("*", , , , , xlPrevious).Row

If .Cells(i, 20) <> "" And .Cells(i, 1) <> "" Then

Worksheets("BP").Cells(derlig2 + 1, 3).Value = .Range(.Cells(i, 1) & ":" & .Cells(i, 7)).Value

Worksheets("BP").Cells(derlig2 + 1, 10).Value = .Cells(i, 20).Value

End If

Next i

End With

End Sub

En effet, tes remarque sont très juste.

Malheureusement cela ne change rien.

étant donné que .Range ne fonctionne pas je vais copier cellule par cellule, tant pis.

Merci comme même

Bonjour

Une première remarque :

1- votre code n'est pas indenté

Une deuxième remarque:

2- la syntaxe de votre instruction est incorrecte. La syntaxe correcte est

.Range(.Cells(i, 1), Cells(i, 7)).Value) 

D'après ce que je crois comprendre de ce que voulez faire, ce code devrait fonctionner

Sub Conca()

    With ActiveSheet

        For i = 1 To 52
            derlig2 = Worksheets("BP").Columns("A").Find("*", , , , , xlPrevious).Row

            If .Cells(i, 20) <> "" And .Cells(i, 1) <> "" Then
                tb = Application.Transpose(Application.Transpose(.Range(.Cells(i, 1), Cells(i, 7)).Value))  'tableau à une dimension
                Worksheets("BP").Cells(derlig2 + 1, 3).Value = Join(tb, "")
                Worksheets("BP").Cells(derlig2 + 1, 10).Value = .Cells(i, 20).Value
            End If
        Next i

    End With
End Sub

Bonjour,

l'indentation est elle importante ?

Ensuite j'ai pris note de vos remarque pour la syntaxes, merci.

Enfin, le nom de la macro porte a confusion, elle n'est qu'un test pour l'instant.

Je ne souhaite pas concaténer des cellules dans une, mais plusieurs feuille dans une (c'est l'étape d'après).

Pour l'instant le code que j'essaie de mettre en place c'est de copier les colonnes 1 à 7 dans une autre feuille, sans concaténer.

bonjour

salut thev

1/

il est primordial d'indenter son code et de le commenter avec soin

et de lui mettre un titre en français (ou english)

2/

pourquoi un code alors que Excel dispose d'outils plus simples ?

joins un peeeetit fichier de 3 colonnes et 5 lignes et le résultat attendu

à te relire

amitiés

l'indentation est elle importante ?

Elle est fondamentale pour la clarté et la compréhension du code.

Si vous ne souhaitez pas de concaténation, alors il faut étendre votre plage réceptrice à 7 colonnes.

ci-dessous code :

Sub Conca()

    With ActiveSheet

        For i = 1 To 52
            derlig2 = Worksheets("BP").Columns("A").Find("*", , , , , xlPrevious).Row

            If .Cells(i, 20) <> "" And .Cells(i, 1) <> "" Then
                Worksheets("BP").Cells(derlig2 + 1, 3).Resize(, 7).Value = .Range(.Cells(i, 1), Cells(i, 7)).Value
                Worksheets("BP").Cells(derlig2 + 1, 10).Value = .Cells(i, 20).Value
            End If
        Next i

    End With
End Sub

La macro ne fonctionne pas si je suis sur la feuille BP.... mais sinon il fonctionne, bien que je dois modifier quelques cellules sur les feuilles sources.

Tu verras c'est un peu le chantier lol

1copie-cmtv.xlsm (70.64 Ko)
Rechercher des sujets similaires à "erreur value range"