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 :

[VBA] Bug dans Copier/Coller automatique


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 51
    Par défaut [VBA] Bug dans Copier/Coller automatique
    Bonjour

    Voila encore un probléme, ce coup ci je voudrais copier un texte contenue en Feuil4 plusieurs fois sur une même ligne de la feuil2 avec des intervalle régulier.

    Voici mon code
    Il comporte des erreurs mais étant débutant j'ai beaucoup de mal à les trouver.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Sub testy2()
     
    'Declaration variable:
    '---------------------
    Dim NumControle As Long              
    Dim NumFrequence As Long           'C'est la frequence de collage au sein de la ligne
    Dim Temp As Long
    Dim DecalageALOrigine As Integer   'C'est l'écart avec lequel les répétion de collage vont commencer    
     
    'Declaration des compteur
    Dim i As Integer
    Dim j As Integer
     
    'Init de svariable:
    '------------------
    NumControle = 0
    NumFrequence = 0
    DecalageALOrigine = 0
     
    '
     
    '-->Boucle de lecture des tâches préventives
    MsgBox "i init=" & i
    For i = 6 To 150
     
        Temp = Worksheets("Feuil2").Range("A1").Offset(i, 1).Value
     
        '-->Numéro de tâches = numùéro de lignes listing
        Worksheets("Feuil4").Range("A1").Offset(Temp, 3).Select
        Selection.Copy
     
     
        '-->Demarage du collage de la tâche au frequence voulu + decalage
        Worksheets("Feuil2").Activate
        DecalageALOrigine = Worksheets("Feuil2").Range("A1").Offset(i, 3).Value
     
        j = 4 + DecalageALOrigine
     
            While j < 52
               '-->Collage au frequence
               Worksheets("Feuil2").Range("A1").Offset(i, j).Select
               ActiveSheet.Paste
               j = j + NumFrequence
        Wend
    Next
     
    End Sub

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Un premier constat: j = j + NumFrequence
    avec NymFrequence=0
    ne s'incrémentera jamais, et tu te trouve avec une boucle infinie.

    certes des amélioration au code sont possible (sans les select)

  3. #3
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 51
    Par défaut
    Oui effectivement #2 c'est une faute de frappe il suffit de el remplacer par un entier au quelconque, 4 par exemple c'est ce qui va me donner l'écartement entre chaque collage (nombre de colonne).

    Reste qu'il me dit que c'est une erreur inconnue, et que celle ci n'y figure pas car c'est pas a execution mais a la compilation que ca bug.

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    J'ai essayé de supprimer les select

    j'ai mis 2 msgbox pour vérifier le contenu de Temp et j
    à tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Sub testy3()
    Dim Temp As Integer, i As Integer, j As Integer, NumFrequence As Integer
    Dim ws2 As Worksheet, ws4 As Worksheet
     
    Application.ScreenUpdating = False
    NumFrequence = 4
    Set ws2 = Worksheets("Feuil2")
    Set ws4 = Worksheets("Feuil4")
    With ws2
        For i = 6 To 150
            Temp = .Range("B" & i + 1).Value
            MsgBox Temp
            j = 4 + .Range("D" & i + 1).Value
            MsgBox j
            While j < 52
                .Cells(i, j).Value = ws4.Range("D" & Temp + 1).Value
                j = j + NumFrequence
            Wend
        Next i
    End With
    Set ws2 = Nothing
    Set ws4 = Nothing
    End Sub
    à l'aide du pas à pas (F8), tu peux suivre l'évolution de tes variables

    EDIT: j'ai relu ton post, j'ai rectifié le code; à tester

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

Discussions similaires

  1. Outil VBA sur ArcGis : Copier/coller les lignes dans une table attributaire
    Par Alexiis dans le forum SIG : Système d'information Géographique
    Réponses: 2
    Dernier message: 26/09/2013, 16h15
  2. Réponses: 1
    Dernier message: 27/01/2011, 22h30
  3. Réponses: 1
    Dernier message: 19/12/2006, 16h12
  4. [VBA-E]échec copier-coller entre 2classeurs
    Par touche_a_tout dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 06/12/2006, 23h22
  5. VBA-E: Pb copier-coller entre Excel et .csv
    Par tiger118 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/06/2006, 11h08

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