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 :

macro vba manipuler 2 feuilles


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2002
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 31
    Points : 24
    Points
    24
    Par défaut macro vba manipuler 2 feuilles
    bonjour,
    comment manipiler 2 feuilles voici le début de mon code :
    je n'arrive pas faire une double boucle !le montant copiée concerne la feuiile reglement alors que je souhaite recopier le montant facturé et le N°facture pour ensuite faire le calcul par periode et N°facture
    -----------------------------------------------------------
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    Sub CopieMOntant()
        Dim j As Integer
        Dim MONTANTAREPORTER
     
       'NOMDELAFEUILLE = InputBox("Entrez le Nom de la Feuille")
       NOMDELAFEUILLE = "REGLEMENT"
        'Application.ScreenUpdating = False
     
       Worksheets(NOMDELAFEUILLE).Activate
        Set r = Range("a1:a3073")
       'ON DETERMINE LA DERNIERE LIGNE ACTIVE
        DerniereLigne = ActiveSheet.UsedRange.Row - 1
        DerniereLigne = DerniereLigne + ActiveSheet.UsedRange.Rows.Count
     
            ' NOMDELAFEUILLE2 = InputBox("Entrez le Nom de la Feuille")
             NOMDELAFEUILLE2 = "ECART2-2010"
             Worksheets(NOMDELAFEUILLE2).Activate
             DerniereLigne2 = ActiveSheet.UsedRange.Row - 1
             DerniereLigne2 = DerniereLigne2 + ActiveSheet.UsedRange.Rows.Count
     
     
        For i = 2 To 26 'DerniereLigne
     
                'je consulte la période de la feuille règlement
                 If r.Cells(i, 11).Value = s.Cells(i, 5).Value Then
     
                    For j = (i) To 5 'DerniereLigne2
     
                        'COLONNE N°SS----------JE TESTE LA COLONNE N°SS------------------------
                          If r.Cells(i, 10).Value = s.Cells(j, 3).Value Then
                            'JE SURLIGNE LES LIGNES EN JAUNE FEUILLE REGLEMENT--------------------
     
                                r.Cells(i, 10).EntireRow.Interior.ColorIndex = 6
                             'JE SURLIGNE LES LIGNES EN JAUNE FEUILLE ECART2-2010--------------------
                                 s.Cells(j, 3).EntireRow.Interior.ColorIndex = 6
                                 'i = i + 1
                                 'JE RECOPIE LE MONTANT FACTURE SUR LA  FEUILLE REGLEMENT--------------------PROBLEME RECOPIE LE MONTANT DE LA COLONNE DE LA FEUILLE REGLEMENT AU LIEU DE LA FEUILLE ECART2-2010
                                 MONTANTAREPORTER = s.Cells(j, 10).Value 'MONTANT FACTURE A REPORTER
                                  'JE RECOPIE LE N°FACTURE SUR LA  FEUILLE REGLEMENT--------------------
                                  NUMEROFACTUREAREPORTER = s.Cells(j, 28).Value 'N°FACTURE A REPORTER
     
                             'JE recopie le montant dans la colonne F de la feuille REGLEMENT DANS La feuille ecart2-2010 colonne K
                             'POUR LE MOIS DE 2/2010
                             r.Cells(i, 6).Value = MONTANTAREPORTER
                              s.Cells(j, 22).Value = NUMEROFACTUREAREPORTER
     
                                 Exit For
                          Else
     
                               '  i = i + 1
                          End If
     
                      Next j
     
                    Else 'je consulte la période de la feuille règlement
     
     
     
                  End If
     
        Next i
     
        Application.ScreenUpdating = True
        MsgBox ("Copie terminée")
    End Sub

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Points : 877
    Points
    877
    Par défaut
    Bonjour

    Pour commencer je n'ai aucune idée précise de ce que tu veux faire donc les conseils seront d'ordre générales.

    En premier il faut mieux éviter l'utilisation répété d'instruction comme activate, select, selection... qui deviennent très vite sources d'erreurs

    L'idéal est d'utiliser des variables objets.

    Je te propose un squelette de programme comme base, n'hésite pas à utiliser F1 en te plaçant sur une fonction que tu ne connais pas. Ensuite si tu as d'autre question soit plus précis sur le besoin.

    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
    Sub CopieMOntant()
    Dim wsh1 As Worksheet, wsh2 As Worksheet
    Dim plage1 As Range, plage2 As Range
    Dim cell1 As Range, cell2 As Range
     
    Set wsh1 = Worksheets("REGLEMENT")
    Set plage1 = Range("a1:a3073") 'plage à parcourir dans la feuille 1
     
    Set wsh2 = Worksheets("ECART2-2010")
    Set plage2 = Range("a1:a3073") 'plage à parcourir dans la feuille 2
     
    For Each cell1 In plage1 'Boucle dans la plage de la feuille REGLEMENT
     
      For Each cell2 In plage2 'Boucle dans la plage de la feuille ECART2-2010
     
        'ici tu peux utiliser des comparaison du type
        If cell1.Value = cell2.Value Then
        'ou si ce n'est pas dans la même colonne
        If cell1.Offset(0, 11).Value = cell2.Offset(0, 5).Value Then
     
        'pour la copie il faut utiliser une ecriture de type
        'si tu veux écrire dans la feuille 1
        wsh1.Cells(cell1.Row, 8) = wsh2.Cells(cell2.Row, 6)
     
        'pour colorer une ligne sur la feuille1
        wsh1.Cells(cell1.Row, 0).EntireRow.Interior.ColorIndex = 6
     
      Next cell2
     
    Next cell2
     
    'et en fin de code libération des objets
    Set wsh1 = Nothing
    Set plage1 = Nothing
    Set cell1 = Nothing
    Set wsh2 = Nothing
    Set plage2 = Nothing
    Set cell2 = Nothing
     
    End Sub
    bon courage
    Cordialement.

    N'oubliez pas de cliquer sur Résolu quand vous avez obtenu la réponse à votre question.
    Citation
    Il y a 10 sortes de gens au monde : ceux qui connaissent le binaire et les autres » - Anonyme
    Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2002
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 31
    Points : 24
    Points
    24
    Par défaut macro bva sur 2feuilles
    bonsoir,
    merci pour votre réponse mon but automatiser une tache croiser le lignes réglées et facturées en testant la période si égale je teste le NIR si égale je recopie le n°facture et le montant facturée dans la feuille reglement colonne février et colonne N°facture2/2010 par exemple voici un extrait de mon classeur avec sa macro qui coince sur le montant facturé
    merci de votre aide, je bloque depuis plusieurs jours.
    Fichiers attachés Fichiers attachés

  4. #4
    Membre à l'essai
    Inscrit en
    Juillet 2002
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 31
    Points : 24
    Points
    24
    Par défaut macro vba et 2feuilles
    bonjour,
    résolu erreur d'indice

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/03/2009, 17h43
  2. Macro VBA - Manipulation de plusieurs fichiers
    Par Shaia79 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 27/02/2008, 21h06
  3. Exécution Macro VBA et actualisation des feuilles
    Par DjJEJ83 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/07/2007, 10h08
  4. [VBA-E]Supprimer macro (code dans code feuille de calcul)
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/04/2006, 16h37
  5. [VBA-E] [help]macro pour dupliquer une feuille (en valeur)
    Par minikisskool dans le forum Macros et VBA Excel
    Réponses: 31
    Dernier message: 07/11/2005, 19h24

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