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 :

Code qui marche à moitié (copie d'une feuille à une autre)


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 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 57
    Par défaut Code qui marche à moitié (copie d'une feuille à une autre)
    donc j'aimerais copier une ligne si dans l'une des cellules de ligne (F) il y a "CFO".

    lorsque j'execute la macro j'ai une erreur avec 400 ecrit,

    pourtant il arrive à me recopier mais pas tout.


    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
    Sub Cfo()
     
    Dim PremiereLigneVide As Long
     
    Application.ScreenUpdating = False 'Gèle l'écran pendant l'exécution de la macro
     
    PremiereLigneVide = Cells(3, 4).End(xlDown).Row 'Détermine la première ligne vide sous la cellule de départ
    j = 3
     
    For i = 3 To PremiereLigneVide
     
    If Worksheets("FollowUp").Range("F" & i).Value = "CFO" Then
    Worksheets("CFO").Range("A" & j & ":AO" & j).Value = Worksheets(1).Range("A" & i & ":AO" & i).Value
    j = j + 1
     
    End If
     
    Next i
     
    MsgBox "Vous avez copié " & j - 3 & " lignes.", , "Traitement terminé"
     
    End Sub

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Salut,

    Essaie sans le .value ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Worksheets("CFO").Range("A" & j & ":AO" & j).Value = Worksheets(1).Range("A" & i & ":AO" & i).Value
    j = j + 1

  3. #3
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 57
    Par défaut
    Ca ne change rien

    Je vois pas oü est le probleme...

    il me copie 9 ligne sur 11 mais y a le message d'erreur

    et pourtant, mes lignes sont deja trie dans la feuille 1.

  4. #4
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Il me semble qu'il y a un décalage entre i et j puisqu'il est incrémenté ensuite,
    pourquoi utiliser J et pas seulement i ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For i = 3 To PremiereLigneVide
     
     If Worksheets("FollowUp").Range("F" & i).Value = "CFO" Then
      Worksheets("CFO").Range("A" & i & ":AO" & i) = Worksheets(1).Range("A" & i & ":AO" & i) 
     End If
     
    Next i

  5. #5
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 57
    Par défaut
    le j c'est le compteur pour ma feuille 2.

    Si on ne prend que le i, je risque d'avoir des lignes vides entre les lignes avec

    cfo.

    Bon ici il s'averent que mes lignes cfo sont ensemble, mais la n'est pas le

    probleme.

    le probleme est de savoir pourquoi il break alors qu'il reste encore 2 lignes à copier (qui sont juste en dessous...)

    quand j'enleve le Value, ça marche plus du tout, donc je le remet et j'ai que 9 copie sur 11 avec un erreur 400.

    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 Cfo()
     
    Dim PremiereLigneVide As Long
     
    Application.ScreenUpdating = False 'Gèle l'écran pendant l'exécution de la macro
     
    PremiereLigneVide = Cells(3, 4).End(xlDown).Row 'Détermine la première ligne vide sous la cellule de départ
    j = 3
     
    For i = 3 To PremiereLigneVide
     
    If Worksheets("FollowUp").Range("F" & i).Value = "'CFO" Then
    Worksheets("CFO").Range("A" & j & ":AO" & j).Value = Worksheets(1).Range("A" & i & ":AO" & i).Value
    j = j + 1
     
    End If
     
     
    Next i
     
    MsgBox "Vous avez copié " & j - 3 & " lignes.", , "Traitement terminé"
     
    End Sub
    j'ai changé Worksheets("FollowUp").Range("F" & i).Value = "'CFO"

    par Worksheets("FollowUp").Range("F" & i).Value = "''CFO"

    le programme "marche" c'est dire que j'arrive jusqu' à la message box,

    seulememt j'ai copié 0 lignes .......

    Quelqu'un arrive à voir l'erreur ?

    Mis le code dans un module et j'ai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("CFO").Range("A" & j & ":AO" & j).Value = Worksheets("FollowUp").Range("A" & i & ":AO" & i).Value
    en jaune

    avec can't execute code in break mode

  6. #6
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    est-ce la bonne feuille

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Worksheets(1).Name

  7. #7
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    J'ai modifié le code et deja ça marche mieux :

    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 Cfo()
     
    Dim PremiereLigneVide As Long
    Dim Fl As Worksheet
     
     Set Fl = Worksheets("Feuil1") ' Nom de la feuille a adapter
     
    Application.ScreenUpdating = False 'Gèle l'écran pendant l'exécution de la macro
     
    PremiereLigneVide = Fl.Cells(3, 4).End(xlDown).Row 'Détermine la première ligne vide sous la cellule de départ
    j = 3
     
    For i = 3 To PremiereLigneVide
    If Fl.Range("F" & i).Value = "CFO" Then
    Worksheets("CFO").Range("A" & j & ":AO" & j).Value = Fl.Range("A" & i & ":AO" & i).Value
    j = j + 1
     
    End If 
    Next i
     
    MsgBox "Vous avez copié " & j - 3 & " lignes.", , "Traitement terminé"
     
    End Sub
    Edit un bout du code m'interpelle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fl.Cells(3, 4).End(xlDown).Row
    Ici tu t'arrête si tu as une cellule vide dans la colonne D, c'est ce que tu veux ?

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

Discussions similaires

  1. [XL-2010] Transferts de données entre deux feuilles qui marche à moitié
    Par ElPibeOro dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/05/2013, 13h28
  2. Assistance au code qui marche plus?
    Par bslota dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 07/03/2007, 14h40
  3. [VBA-E] Probleme COPY PASTE d'une feuille à une autre
    Par AliochaBada dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/07/2006, 17h56
  4. [VBA-E] Copie par valeur d'une feuille dans un nouveau classeur
    Par MatMeuh dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 17/05/2006, 22h38
  5. Code qui marche, mais pas la mise à jour
    Par Cablan dans le forum Access
    Réponses: 7
    Dernier message: 24/10/2005, 17h09

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