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 :

copier des informations d'un onglet à l'autre


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 49
    Points : 20
    Points
    20
    Par défaut copier des informations d'un onglet à l'autre
    Bonjour,

    Je souhaite "copier/coller" des données d'une feuille à l'autre sous certaines conditions. Cependant quand j'exécute ma macro toutes les lignes ne se copient pas mais seulement 1.

    Ci-dessous mon code
    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
    Sub TestV11()
     
    Dim Zone1 As Range 'zone de données ds la feuille de base
    Dim Nblb As Integer 'compteur de ligne
    Dim Zone2 As Range 'zone de données ds la feuille reception
    Dim Nbla As Integer 'nbre de ligne dans la feuille reception
    Dim Cl As Integer 'compteur de ligne
    Dim Cc As Integer 'compteur de champs
    Dim valeur As String
    valeur = InputBox("Entrée période", "Choix de la période")
     
    Set Zone1 = Worksheets("sheet1").[a5].CurrentRegion
    Nblb = Zone1.Rows.Count
    For Cl = 5 To Nblb
        If Zone1.Cells(Cl, 17) = valeur Then
            If Zone1.Cells(Cl, 24) > 0 Then
     
                'determination du nbre de ligne sur la feuille reception
                Set Zone2 = Worksheets("datas test").[a12].CurrentRegion
                Nbla = Zone2.Rows.Count
     
                'transfert de données
                For Cc = 1 To 30
                    Zone2.Cells(Nbla, 1) = Zone1.Cells(Cl, 7)
                    Zone2.Cells(Nbla, 2) = Zone1.Cells(Cl, 8)
                    Zone2.Cells(Nbla, 5) = Zone1.Cells(Cl, 10)
                    Zone2.Cells(Nbla, 7) = Zone1.Cells(Cl, 12)
                    Zone2.Cells(Nbla, 15) = Zone1.Cells(Cl, 17)
                    Zone2.Cells(Nbla, 11) = Zone1.Cells(Cl, 24)
     
                Next Cc
            End If
        End If
    Next Cl
     
    End Sub
    Merci d'avance

  2. #2
    Membre expérimenté
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Points : 1 580
    Points
    1 580
    Par défaut
    Bonjour,
    La boucle de transfert de données se fait pour Cc = 1 à 30, mais à l'intérieur de la boucle cette variable n'est pas utilisée, Excel exécute donc 30 fois la même chose...

  3. #3
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    La boucle avec Cc m'est étrange
    Sinon, tu peux appliquer un filtre automatique avec tes 2 condition, et reporter les cellules résultat du filtre
    Ci-joint une piste
    je suppose que la ligne 4 de sheet1 et la ligne 12 de feuille datastest comprennent les titres de colonnes
    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
    Sub Reporter()
    Dim Sh As Worksheet
    Dim LastLig As Long, NewLig As Long
    Dim c As Range
    Dim Valeur As String
     
    Valeur = InputBox("Entrée période", "Choix de la période")
    If Valeur <> "" Then
    Application.ScreenUpdating = False
    With Worksheets("sheet1")
       .AutoFilterMode = False
       LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
       With .Range("A4:X" & LastLig)
          .AutoFilter field:=17, Criteria1:=Valeur
          .AutoFilter field:=24, Criteria1:=">0"
       End With
       If .Range("A4:A" & LastLig).SpecialCells(xlCellTypeVisible).Count > 1 Then
          Set Sh = Worksheets("datas test")
          NewLig = Sh.Cells(Sh.Rows.Count, "A").End(xlUp).Row + 1
          For Each c In .Range("A5:A" & LastLig).SpecialCells(xlCellTypeVisible)
             Sh.Cells(NewLig, 1).Value = .Cells(c.Row, 7).Value
             Sh.Cells(NewLig, 2).Value = .Cells(c.Row, 8).Value
             Sh.Cells(NewLig, 5).Value = .Cells(c.Row, 10).Value
             Sh.Cells(NewLig, 7).Value = .Cells(c.Row, 12).Value
             Sh.Cells(NewLig, 15).Value = .Cells(c.Row, 17).Value
             Sh.Cells(NewLig, 11).Value = .Cells(c.Row, 24).Value
             NewLig = NewLig + 1
          Next c
          Set Sh = Nothing
          .AutoFilterMode = False
       End If
    End With
    End If
    End Sub

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 49
    Points : 20
    Points
    20
    Par défaut
    super!! ça fonctionne très bien!! c'est bien meilleur que ce que j'avais fait!!
    Bonne soirée

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

Discussions similaires

  1. [XL-2003] copier des informations d'un fichier xls dans un autre fichier xls
    Par ironfalcon dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 23/03/2010, 13h39
  2. Copier des objets d'un formulaire à un autre en VBA
    Par vincentdacol dans le forum Access
    Réponses: 1
    Dernier message: 24/04/2006, 14h18
  3. Réponses: 4
    Dernier message: 19/03/2006, 15h20
  4. Réponses: 7
    Dernier message: 06/02/2006, 11h48
  5. Réponses: 5
    Dernier message: 02/11/2005, 11h49

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