[VBA] appliquer plusieurs contraintes et instructions - Page 2
Répondre à la discussion
Page 2 sur 2 PremièrePremière 2
Affichage des résultats 31 à 32 sur 32

[VBA] appliquer plusieurs contraintes et instructions



  1. #31
    invitee6dd3631

    Re : [VBA] appliquer plusieurs contraintes et instructions


    ------

    Oui mais je veux qu'il ne crée qu'une seule fois une nouvelle feuille. Et par contre qu'il crée une nouvelle ligne pour chaque nouvelle valeur.
    Par exemple si j'ai :
    A B C D
    1 1 2 1
    3 1 3 5
    4 0 3 1
    0 0 3 3

    alors je dois additionner 1 + 5 et copier 6 dans une cellule, puis 1 + 3 et copier 4 dans une autre cellule (car on passe de 1 à 0 dans B)


    Avec les différentes aides et comentaire j'ai pour l'instant le code suivant:
    Code:
    Option Explicit
    
    Sub macro2()
    Dim ligne As Integer
        Dim total As Double
        Dim feuille As Worksheet
        Dim Flag_Ok As Boolean
     Dim NL As Integer
     Dim NB As Integer
     Dim x As Integer
      Dim ST As Double
     
     
        NL = 1
        NB = 1
        ligne = 2
        total = Worksheets("feuil1").Range("D" & ligne).Value 'les données démarrent à partir de la seconde ligne : PROBLEME 1
        
        'feuille selection existe ??
    
        For x = 1 To Worksheets.Count
            If Worksheets(x).Name = "selection"  Then
                Flag_Ok = True
                Exit For
            End If
        Next x
        'ajout feuille si existe pas
        If Not Flag_Ok Then
            Set feuille = Sheets.Add
            feuille.Name = "selection" 
        End If
        With Worksheets("feuil1")
            .Range("B2:D" & .Range("B" & Rows.Count).End(xlUp).Row).Sort Key1:=.Range("B2")     'tri zone par Colonne B: PROBLEME 2
            Do While .Cells(ligne, 2).Value <> "" 'données à comparées en colonne 2
                If .Cells(ligne, 2).Value = .Cells(ligne + 1, 2) Then
                    total = total + .Cells(ligne + 1, 4).Value
                    NB = NB + 1
                Else
                    'je mets les résultats dans un autre onglet
                    If NB > 1 Then     'x cellules colonnes 2 egales
                        ST = total + .Cells(ligne + 1, 4)
                    Else        'une seule cellule
                        ST = .Cells(ligne, 4)
                    End If
                    Worksheets("selection" ).Cells(NL, 1).Value = ST
                    NL = NL + 1     'incremente ligne feuille resultat
                    total = 0           'initialisation Somme: PROBLEME 3
                End If
                ligne = ligne + 1       'incremente ligne feuille donnees
            Loop
        End With
    End Sub
    Si tu as encore de l'aide à m'accorder!! En tout cas merci beaucoup!

    -----

  2. #32
    invitee6dd3631

    Thumbs up Re : [VBA] appliquer plusieurs contraintes et instructions

    Rebonjour!

    Le code qu'on m'a donné bien gentiment et que j'essaie toujours de comprendre!
    Donc dans le tableau suivant la colonne B sert de référence et lorsque ça valeur change l'addition des cellules correspondantes de la colonne D est effectuée.
    Donc ici on a 6+5=11 copié dans la cellule d'une nouvelle feuille, ensuite 1+3+2=6 copié dans la cellule suivante etc...
    A B C D
    1 1 2 6
    3 1 3 5
    4 0 3 1
    0 0 3 3
    3 0 7 2

    Code:
    Option Explicit
    Sub macro5()
    Const n = "selection"
    Dim f As Worksheet
    Dim c As Range
    Dim d As Range  'destination
    Dim t As Double
      
      On Error Resume Next
      Set f = Worksheets(n)
      On Error GoTo 0
      If f Is Nothing Then
        Set f = Worksheets.Add
        f.Name = n
      End If
      Set d = f.Cells(1, 1)
      With Worksheets("feuil1").Range("A1").CurrentRegion
        .Sort Key1:=.Cells(2, 2), Header:=xlYes
        With .Resize(.Rows.Count - 1).Offset(1)
          For Each c In .Columns("B").Cells
            If c.Value = c.Offset(-1).Value Then
              t = t + c.Offset(0, 2).Value
              d.Value = t
            Else
              t = c.Offset(0, 2).Value
              If c.Row > .Row Then Set d = d.Offset(1)
              d.Value = t
            End If
          Next c
        End With
      End With
    End Sub
    Merci encore!

Page 2 sur 2 PremièrePremière 2

Discussions similaires

  1. Instructions string
    Par invitee6712f08 dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 14/05/2011, 11h55
  2. Instructions privilégiées
    Par invitec85fb8ec dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 22/10/2010, 11h08
  3. Instructions AT ELZ50
    Par invitea88e6ae4 dans le forum Électronique
    Réponses: 3
    Dernier message: 03/05/2008, 10h40
  4. VBA Excel: appliquer une macro a plusieurs fichiers
    Par inviteb73ce398 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 14/03/2007, 10h45
  5. instructions??
    Par invite9b9d0eb8 dans le forum Électronique
    Réponses: 3
    Dernier message: 16/11/2006, 15h36