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
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
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 colonneEnvoyé par ouskel'n'or
Alors teste çaA+
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
Change le nom de la feuille si nécessaire![]()
Merci la solution marche parfaitement .Envoyé par ouskel'n'or
Comment pourai je inserer une ligne pour chaque valeurs double en faisant la somme de ces elements doubles et les suprimer apres ?
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.
A+
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
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 .
j´ai eu ce code ,
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
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
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.
Tu ne dis pas dans quelle colonne tu mets l'un et l'autre.Envoyé par Tu
![]()
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 .
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
Bonsoir le code ci dessu marche bien , j´ai besoin deffacer les lignes des valeurs doubles apres comptage des valeurs doubles
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.
merci
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
Ce que j'ai compris : Tu veux effacer toutes les lignes contenant le mot "double"... Est-ce bien ça ?
BonsoirEnvoyé par ouskel'n'or
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
Bonsoir
je viens ce code qui repond en partie a ma questionMais je ne veux pas qu´il me mets les resultats dans de nouvelles colonnes , comment puis-je modifier cela p
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
Partager