Copier / coller - sélection VBA

Bonjour,

Je sens que c'est une question bête, mais je comprends pas pourquoi le code suivant ne fonctionne pas :

Sub toto()

Dim I As Integer 
Dim J As Integer 
Dim K As Integer 
Dim L As Integer

For J = 2 To 31
    K = 3
    L = 3
    For I = 3 To 68

    Worksheets(1).Range(cells(I, J), cells(I + 20, J)).Value = Worksheets("Feuil8").Range(cells(K, L), cells(K + 20, L)).Value

        I = I + 22
        L = L + 1

        Next I
        J = J + 1
        K = K + 21
        Next J
End Sub

J'ai une erreur d'exécution 1004 qui apparait... "erreur définie par l'application ou par l'objet", je ne comprends pas du tout où est l'erreur.

Merci d'avance!

Bonjour,

Une piste : l'onglet est-il protégé ?

Bouben

Bonjour,

Non, en tout cas dans l'onglet révision je n'ai pas l'impression qu'une protection quelconque soit activée...

Nuns

Pour investiguer davantage, nous avons besoin du fichier, pas problème particulier repéré dans le code.

Cordialement

Bouben

Voilà le fichier en PJ.

Merci

16nuns.zip (27.88 Ko)

En quelques lignes, le traitement prévoit de faire quoi ?

Bouben

Bonjour.

Le fichier que tu as envoyé est-il un fichier juste pour nous ou le vrai ?

Parce que la fameuse "Feuil8" je continue de la chercher !

Bonne journée.

Bonjour,

Je suppose que ton erreur 1004 est sur l'instruction d'affectation... Effectivement, Excel a un peu de mal à réaliser l'affectation avec les plages définies de la façon dont tu le fais, mais il te suffira de procéder autrement en utilisant des variables et/ou la méthode Resize qui déstabilise beaucoup moins Excel dans ce cas...

Par contre tu devrais repasser ton code au peigne fin : je ne suis pas sûr que ce qu'il fait corresponde vraiment à ce que tu veux qu'il fasse (une fois réglé le bogue d'affectation) !

L'utilisation de boucles For... Next avec incrémentation corrective du compteur de boucle simultanée réclame une certaine attention et n'est justifiée que si une correction du déroulement de la boucle est à opérer pour certains cas qui dérogeraient alors au déroulement régulier...

J est censé varier de 2 à 31, mais on lui ajoute 1 à chaque tour : les valeurs prises successivement seront donc 2 4 6 8 10.... 28 30 (ce qui pointera lors de son utilisation les colonnes B D F H J... AB AD)

Si c'est bien la boucle souhaitée (pas sûr !) la formulation logique aurait dû être : For J = 2 To 30 Step 2 sans incrémentation complémentaire.

De même variation de I de 3 à 68, mais on l'incrémente de 22 dans le tour... I ne prendra donc que 3 valeurs successivement : 3 26 et 49. Est-ce que cela correspond bien à ce qui est voulu ?

Veut-on bien faire (1er tour de la boucle J) : B3:B23 (1re feuille) = C3:C23 (2e feuille), B26:B46 (1re f) = D3:D23 (2e f), B49:B69 (1re f)= E3:E23 (2e f) ?

Cordialement.

NB- Indenter correctement ton code ne serait pas inutile, cela aide bien à s'y retrouver !

Bonjour,

Alors, pour répondre à tout le monde :

Elhevan a écrit :

Bonjour.

Le fichier que tu as envoyé est-il un fichier juste pour nous ou le vrai ?

Parce que la fameuse "Feuil8" je continue de la chercher !

Bonne journée.

C'est un fichier adapté, document de travail, je ne peux pas le partager. Désolé effectivement j'ai changé la syntaxe.

bouben a écrit :

En quelques lignes, le traitement prévoit de faire quoi ?

Bouben

Le but de l'opération est le suivant :

Dans l'onglet 1 :

J'ai des produits A, B, C... Chacun de ces produits est caractérisé par les données croisées a,b,c,d... et 1,2,3,4...

(chaque données a,b,c,d caractérise le produit par une valeur de 1,2,3,4...)

Je souhaite réorganiser mes données dans l'onglet 2.

Concrètement dans mes onglets l'objectif est que le range B3:B23 (ws1) passe en C3:C23 (ws2), le D25:D45 passe en D45:D65.

Si je dois prendre l'exemple sur les données "a" (raisonnement ws1 vers ws2) B3:B23 -> C3:C23, B25:B45 -> D3:D23, B47:B67 -> E3:E23.

Pour les données "b" : C3:C23 -> C24:C44, C25:C45 -> D24:D44, C47:C67 -> E24:E44.

MFerrand, j'ai effectivement dû faire quelques erreur au niveau des valeurs, et pour la boucle sur le J je me suis complétement planté !

Pour le I c'est bien ça, afin qu'il reparte sur chaque valeur de A, B, C...

je ne comprend pas comment la méthode resize pourrait fonctionner dans mon cas. Et je suis très débutant, donc j'avoue que "l'instruction d'affectation" pour moi c'est du Chinois.

Merci tout le monde!

Rechercher des sujets similaires à "copier coller selection vba"