IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

insertion plage


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 20
    Par défaut insertion plage
    Bonjour,

    j'essaie vainement d'insérer une plage de cellules

    le test fonctionne mais la macro sort une erreur 1004 au moment de la définition du range colonne k à gauche duquel j'essaie d'insérer une plage (manipulation équivalente au ctrl+shift+"+")

    mes connaissances de base à ce sujet sont minces

    pourquoi cela ne marche-t-il pas ? : s

    (copie d'une plage de la feuille 5 à la feuille 6 puis insertion plage si le test sur la valeur de l'intitulé de la plage collée a échoué)

    For i = 2 To a

    ThisWorkbook.Sheets("Step_5").range("A" & Sheets("indices").Cells(i, 4).Value + 1 & ":" & "AC" & Sheets("indices").Cells(i, 5).Value - 1).Copy

    j = Sheets("Step_6").range("A1000000").End(xlUp).Row

    ThisWorkbook.Sheets("Step_6").Cells(j + 1, 1).Select
    ActiveSheet.Paste

    For k = 1 To 9

    If ThisWorkbook.Sheets("Step_6").Cells(j + 1, k).Value <> Sheets("Step_6").Cells(1, k).Value And ThisWorkbook.Sheets("Step_6").Cells(j + 1, k).Value = Sheets("Step_6").Cells(1, k + 1).Value Then

    Dim z As Integer

    z = Application.range("A1000000").End(xlUp).Row

    Dim rng As range

    rng = Sheets("Step_6").range(Cells(j + 1, k), Cells(z, k))

    rng.Select
    Selection.Insert Shift:=xlToRight

    End If

    Next k

    Next i

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour ZibOne,

    Commence par définir tes variables de manière explicite, tu auras beaucoup moins de problème par la suite

    Sinon Qu'est-ce que la variable "a" dans ton code elle n'est définit nulle part

    A+

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 20
    Par défaut
    Citation Envoyé par BrunoM45 Voir le message
    Bonjour ZibOne,

    Commence par définir tes variables de manière explicite, tu auras beaucoup moins de problème par la suite

    Sinon Qu'est-ce que la variable "a" dans ton code elle n'est définit nulle part

    A+
    Bonjour Bruno,

    Je te remercie d'avoir pris le temps de regarder ce que j'avais pu "coder"

    Pour le contexte (notamment ce à quoi la variable "a" fait référence), j'ai en fait un tableau (dans la feuille nommée "indices" dans mon code) qui me permet de récupérer le numéro de la ligne de la colonne A de la feuille "Step_5" dans laquelle deux termes spécifiques apparaissent à plusieurs reprises l'un à la suite de l'autre. Cela me permet de définir les plages à copier de mon "Step_5" vers mon "Step_6".

    La variable "a" correspond à la dernière ligne de ce tableau "indices".

    Or il s'avère qu'il manque parfois une colonne parmi les 9 premières attendues au sein de la plage copiée (c'eût été trop beau!).

    Le test dans la macro a pour but de rajouter une plage (vide) dans le Step_6 afin de réaligner le format du tableau et les avoir tous les uns proprement au-dessous des autres.

    Merci pour l'info "explicit", j'ai relu plus précisément à quoi cela servait sur internet et te confirme que l ' "Option Explicit" est bien en haut de mon module

    Je te remets le code en entier et remercie encore pour ta disponibilité


    Option Explicit

    Sub step_5_to_step_6_selection()

    Dim a As Integer
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer


    a = Sheets("indices").range("D100000").End(xlUp).Row

    ThisWorkbook.Sheets("Step_6").Select
    ThisWorkbook.Sheets("Step_6").range("A1:AH1000000").Select
    Selection.Delete Shift:=xlUp

    Sheets("Step_6").Cells(1, 1).Value = "from"
    Sheets("Step_6").Cells(1, 2).Value = "LC."
    Sheets("Step_6").Cells(1, 3).Value = "Cent"
    Sheets("Step_6").Cells(1, 4).Value = "Type"
    ....
    Sheets("Step_6").Cells(1, 28).Value = "Actual"


    For i = 2 To a

    ThisWorkbook.Sheets("Step_5").range("A" & Sheets("indices").Cells(i, 4).Value + 1 & ":" & "AC" & Sheets("indices").Cells(i, 5).Value - 1).Copy

    j = Sheets("Step_6").range("A1000000").End(xlUp).Row

    ThisWorkbook.Sheets("Step_6").Cells(j + 1, 1).Select
    ActiveSheet.Paste

    For k = 1 To 9

    If ThisWorkbook.Sheets("Step_6").Cells(j + 1, k).Value <> Sheets("Step_6").Cells(1, k).Value And ThisWorkbook.Sheets("Step_6").Cells(j + 1, k).Value = Sheets("Step_6").Cells(1, k + 1).Value Then

    Dim z As Integer

    z = Application.range("A1000000").End(xlUp).Row

    Dim rng As range

    rng = Sheets("Step_6").range(Cells(j + 1, k), Cells(z, k))

    rng.Select
    Selection.Insert Shift:=xlToRight

    End If

    Next k

    Next i

    Sheets("Step_6").Rows("1:2").Select
    Selection.Delete Shift:=xlUp

    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/11/2005, 20h18
  2. La FAQ qui ne marche pas mais pourquoi?
    Par Antoine_1977 dans le forum Access
    Réponses: 3
    Dernier message: 27/09/2005, 16h22
  3. erreur LOOP attendu , mais pourquoi?
    Par ahage4x4 dans le forum ASP
    Réponses: 10
    Dernier message: 23/05/2005, 16h22
  4. Mais pourquoi ... Avec IE les tableaux sont décentrés ?
    Par nebule dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 26/11/2004, 10h04
  5. [Execution] qtintf70.dll Mais pourquoi?
    Par Pedro dans le forum EDI
    Réponses: 4
    Dernier message: 03/06/2004, 13h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo