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 :

faire la somme de valeur particuliere et insertion


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 186
    Par défaut faire la somme de valeur particuliere et insertion
    Bonsoir
    je range mes valeurs par ordre croissant et je retrouve des valeurs qui sont doubles j´aimerai mettre dans le collone B le mot double pour ceux qui sont doublerou plus .Par exemple sie j´ai
    colonne :A B
    23
    23 double
    23 double


    Merci

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Qu'entends-tu par double ? Que la même donnée se trouve sur des lignes successives ?
    A+

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 186
    Par défaut
    Citation Envoyé par ouskel'n'or
    Qu'entends-tu par double ? Que la même donnée se trouve sur des lignes successives ?
    A+
    Oui c´est juste nom pour dire que ce nombre existe deja dans la colonne

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Alors teste ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub EcrireDouble()
    Dim Plage As Range
    Dim Cel As Range
        Set Plage = Worksheets("Feuil1").Range("A2:A" & Range("A65535").End(xlUp).Row)
        For Each Cel In Plage
            If cel.offset(-1, 0) = cel Then
                cel.offset(0, 1).Value = "Double"
            End If
        Next
    end sub
    A+

    Change le nom de la feuille si nécessaire

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 186
    Par défaut
    Citation Envoyé par ouskel'n'or
    Alors teste ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub EcrireDouble()
    Dim Plage As Range
    Dim Cel As Range
        Set Plage = Worksheets("Feuil1").Range("A2:A" & Range("A65535").End(xlUp).Row)
        For Each Cel In Plage
            If cel.offset(-1, 0) = cel Then
                cel.offset(0, 1).Value = "Double"
            End If
        Next
    end sub
    A+

    Change le nom de la feuille si nécessaire
    Merci la solution marche parfaitement .
    Comment pourai je inserer une ligne pour chaque valeurs double en faisant la somme de ces elements doubles et les suprimer apres ?

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Deux choses :
    1 - tu ne connais la dernière ligne qu'une fois la ligne dépassée
    2 - la ligne insérée l'est au dessus de la ligne désignée
    Tu dois donc insérer la ligne puis écrire la somme sur la ligne -1
    Cette somme doit tenir compte de la première ligne de la série. J'ai mis une remarque dans le 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
    Sub EcrireDouble()
    Dim Plage As Range
    Dim Cel As Range
    Dim ok As Boolean, i As Integer
        Set Plage = Worksheets("Feuil1").Range("A2:A" & Range("A65535").End(xlUp).Row)
        For Each Cel In Plage
            If Cel.Offset(-1, 0) = Cel Then
                    Cel.Offset(0, 1).Value = "Double"
                    ok = True
                    Total = Total + Cel.Value
                Else
                    If ok Then
                         'on a sauté la première ligne de la série, on l'ajoute ici
                        Total = Total + Cel.Offset(-1, 0).Value
                        Cel.EntireRow.Insert Shift:=xlDown
                        ok = False
                        Cel.Offset(-1, 0).Value = Total
                        Total = 0
                    End If
            End If
        Next
    End Sub
    A+

  7. #7
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 186
    Par défaut faire la somme de valeur particuliere et insertion
    Bonsoir
    je connais les valeurs doubles de ma collone , j´aimerai compter le nombre de fois qu´une valeur est double dans une colonne et inserer und nouvelle ligne en mettant cette valeur et le nombre de fois quelle est doublée .

  8. #8
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 186
    Par défaut
    j´ai eu ce 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
    Sub EcrireDouble1()
     
    Dim Plage As Range
    Dim Cel As Range
    Dim ok As Boolean, i As Integer
        Set Plage = Worksheets("sap1").Range("A2:A" & Range("A65535").End(xlUp).Row)
        For Each Cel In Plage
            If Cel.Offset(-1, 0) = Cel Then
                    Cel.Offset(0, 1).Value = "Double"
                    ok = True
                    Total = Total + Cel.Value
                Else
                    If ok Then
                         'on a sauté la première ligne de la série, on l'ajoute ici
                        Total = Total + Cel.Offset(-1, 0).Value
                        Cel.EntireRow.Insert Shift:=xlDown
                        ok = False
                        Cel.Offset(-1, 0).Value = Total
                        Total = 0
                    End If
            End If
        Next
    End Sub
    mais ce n´est pas la somme des valeurs de mes cellules doubles que je veux ,mais plutot la somme du nombre fois qu´une valeur est presente

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    C'est la suite de cette discussion ? Si oui, alors reste sur la même discussion. On a déjà le code pour insérer une ligne quand double.
    Les seules différences sont que tu veux insérer une colonne, et mettre le nombre de fois que les données sont identiques au lieu de la somme des valeurs, ainsi que la valeur.
    Je fusionne les discussions.

    Citation Envoyé par Tu
    j´aimerai compter le nombre de fois qu´une valeur est double dans une colonne et inserer und nouvelle ligne en mettant cette valeur et le nombre de fois quelle est doublée .
    Tu ne dis pas dans quelle colonne tu mets l'un et l'autre.

  10. #10
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 186
    Par défaut
    Oui, c´est bien cela .
    Mais je mettre plutot une nouvelle ligne , et a droite de la ou j´ai la mention "double " je mettrai la somme des nombres de fois .

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    C'est simple, tu n'as pas compris mon code ? Remplace ces lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
            If Cel.Offset(-1, 0) = Cel Then
                    'inchangé
                    Total = Total + 1
                Else
                    If ok Then
                         'on a sauté la première ligne de la série, on l'ajoute ici
                        Total = Total + 1
                        Cel.EntireRow.Insert Shift:=xlDown
                        ok = False
                        Cel.Offset(-1, 2).Value = Total
                        Total = 0
                    End If
            End If

  12. #12
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 186
    Par défaut
    Bonsoir le code ci dessu marche bien , j´ai besoin deffacer les lignes des valeurs doubles apres comptage des valeurs doubles

  13. #13
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 186
    Par défaut
    Bonjour
    si ces pour mettre faire la somme d´une autre colonne qui est lie au facteur de recherche de "double".
    C´est a dire pour toute valeur doublée de la colonne A on a une valeur qui est dans une colonne F , dont on veux faire la somme de ces valeurs F.Le code suivant fait la somme des valeurs doubles de A ;je cherche pour une autre colonne E et F.
    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
     Set Plage = Worksheets("feuil1").Range("A2:A" & Range("A65535").End(xlUp).Row)
        For Each Cel In Plage
            If Cel.Offset(-1, 0) = Cel Then
                    Cel.Offset(0, 2).Value = "Double"
                    ok = True
                    Total = Total + Cel.Value
                Else
                    If ok Then
                         'on a sauté la première ligne de la série, on l'ajoute ici
                        Total = Total + Cel.Offset(-1, 1).Value
                        Cel.EntireRow.Insert Shift:=xlDown
                        ok = False
                        Cel.Offset(-1, 1).Value = Total
                        Total = 0
                    End If
            End If
        Next
    merci

  14. #14
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Ce que j'ai compris : Tu veux effacer toutes les lignes contenant le mot "double"... Est-ce bien ça ?

  15. #15
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 186
    Par défaut
    Citation Envoyé par ouskel'n'or
    Ce que j'ai compris : Tu veux effacer toutes les lignes contenant le mot "double"... Est-ce bien ça ?
    Bonsoir
    Non,je voudrai faire la" somme conditionlle" ´c´est a dire je sais dejas quelle valeurs sont doublées ces valeurs ont des equivalents dans une autre colonne E , donc ces cette somme que j´aimerai faire .
    La colonne A sont les numeros de facture et E ce sont le prix de ces factures , mais beacuoup de factures sont repete donc j´ai trouver deja ceux qui sont double , maintenant je veux faire la somme correpondante des ces prix ,(colonne E) et l´inserer sur une nouvelles lignes
    merci

  16. #16
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 186
    Par défaut
    Bonsoir
    je viens ce code qui repond en partie a ma question
    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
     
    Sub test() 
        Dim a, i As Long, b(), n As Long 
        a = ActiveSheet. Range("a1"). CurrentRegion.Resize(,2).Value 
        ReDim b(1 To UBound(a,1), 1 To 2) 
        With CreateObject("Scripting.Dictionary") 
            .CompareMode = vbTExtCompare 
            For i = 1 To UBound(a,1) 
                If Not .exists(a(i,1)) Then 
                    n = n + 1 : b(n,1) = a(i,1) 
                    .add a(i,1), n 
                End If 
                b(.item(a(i,1)),2) = Val(b(.item(a(i,1)),2)) + Val(a(i,2)) 
            Next 
        End With 
        ActiveSheet.Range("d1").Resize(n,2).Value = b 
    End Sub
    Mais je ne veux pas qu´il me mets les resultats dans de nouvelles colonnes , comment puis-je modifier cela p

Discussions similaires

  1. faire la somme des valeurs d'une plage de cellule
    Par Iichham dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/06/2011, 14h35
  2. Réponses: 15
    Dernier message: 21/05/2010, 00h36
  3. Réponses: 9
    Dernier message: 18/02/2008, 11h25
  4. Réponses: 1
    Dernier message: 23/01/2007, 18h23
  5. [Conception] Faire une somme de valeurs définies par une boucle
    Par fixbraun dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 25/09/2006, 23h46

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