Addition Spéciale

A

Amo

Guest
Bonjour à tous.
Voilà dans le fichier joint il y a 2 tableau (feuil1 et feuil2). Celui dans la feuil1 est une base de donnée. Celui dans la feuil2 est le résultat de ce que je souhaiterai obtenir par le biais d'une macro. Pouvez m'aider SVP ? Merci.
Amo. [file name=Classeur3_20060213160558.zip size=1459]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeur3_20060213160558.zip[/file]
 

Pièces jointes

  • Classeur3_20060213160558.zip
    1.4 KB · Affichages: 10

copayo

XLDnaute Occasionnel
avec le fichier c mieux

dis moi si ca te va [file name=addspecial.zip size=1798]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/addspecial.zip[/file]

Message édité par: copayo, à: 13/02/2006 16:19
 

Pièces jointes

  • addspecial.zip
    1.8 KB · Affichages: 30

Gérard DEZAMIS

XLDnaute Accro
Bonjour Amo et Copayo

Histoire de garder la main sur sommeprod ;)

Même si cela n'est pas utile ici puisqu'il n'y a qu'un critère. Bien vu Copayo

Un petit essai quand même

@+GD [file name=Amo_20060213164029.zip size=2275]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Amo_20060213164029.zip[/file]
 

Pièces jointes

  • Amo_20060213164029.zip
    2.2 KB · Affichages: 17

globinours

XLDnaute Junior
bonjour arno, et les autres

Si tu veux vraiment le faire par macro essaye ça
C'est beacoup plus compliqué mais ça marche.

Sub addspéciale()
Dim cellule As Range
Dim tempo As Range
Dim i, j, x, y, indice As Integer
Worksheets(1).Activate
Worksheets(1).Range('B8:B50').Select
With Worksheets(2)
For Each cellule In Selection
x = cellule.Row
y = cellule.Column
If cellule.Text = '' Then Exit For
Set tempo = .Columns('B:B').Find(cellule.Text)
If tempo Is Nothing Then GoTo suite
i = tempo.Row
j = tempo.Column
.Cells(i, j + 1) = .Cells(i, j + 1) + Worksheets(1).Cells(x, y + 1)
.Cells(i, j + 2) = .Cells(i, j + 2) + Worksheets(1).Cells(x, y + 2)
.Cells(i, j + 3) = .Cells(i, j + 3) + Worksheets(1).Cells(x, y + 3)
GoTo fin
suite:
For indice = 8 To 50
If .Cells(indice, 2).Text = '' Then Exit For
Next indice
.Cells(indice, 2) = Worksheets(1).Cells(x, y)
.Cells(indice, 3) = Worksheets(1).Cells(x, y + 1)
.Cells(indice, 4) = Worksheets(1).Cells(x, y + 2)
.Cells(indice, 5) = Worksheets(1).Cells(x, y + 3)
fin:
Next cellule
End With
End Sub
 

Gérard DEZAMIS

XLDnaute Accro
Bonsoir à tous

Amo je n'ai fait qu'utiliser la fonction sommeprod qui va rechercher des valeurs dans des plages (de grandeurs identiques) Plages nommées (col1,Col2 Col3 pour éviter d'avoir à réécrire des coordonnées du type A2:A75, B2:B75; C2:CV75 à chaque fois qu'il y aura une modification de plage.
La plage code comprendra les éléments recherchés (plage de la même taille que les autres...)

Depuis que Monique m'a fait découvrir cette formule ... je me suis ramassé des cheveux blancs supplémentaires mais ma vie (informatique) est changée :p
C'est comme XLD l'essayer.... c'est l'adopter

@+GD

Message édité par: Gérard DEZAMIS, à: 13/02/2006 17:25
 

copayo

XLDnaute Occasionnel
Rebounjour à tous,

Amo, ma solution tres simple te convient elle ?

Merci à pour le code VBA du sommeprod que je connaissais pas.

Moi je fais toujours simplement cette formule sans passer par VBA.

Quels sont les avantages de ce code que je découvre ?

Message édité par: copayo, à: 13/02/2006 17:32
 

Hervé

XLDnaute Barbatruc
bonsoir tout le monde

meme resultat que globinours avec cette syntaxe :


Sub Bouton2_QuandClic()
Dim c As Range, cellule As Range
Dim i As Byte

With Worksheets('feuil1')
       
For Each c In .Range('b8:b' & .Range('b65536').End(xlUp).Row)
               
Set cellule = Sheets('feuil2').Columns('b').Find(c.Text)
               
If Not cellule Is Nothing Then
                       
For i = 1 To 3
                                cellule.Offset(0, i) = cellule.Offset(0, i) + c.Offset(0, i)
                       
Next i
               
End If
       
Next c
End With


salut
 
A

Amo

Guest
Merci tout le monde.
Je tenais à ce que ce soit une macro donc les simples formules ne me convenaient pas. Mais merci quand meme.
Je voudrais aller plus loins maintenant.
Reagardez le fichier joint c'est presque pareil mais plus hard !!! là ca répondrait à mes attentes finales normalement !! ;)
Merci encore.
Amo. [file name=Classeur3_20060213174800.zip size=8227]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeur3_20060213174800.zip[/file]
 

Pièces jointes

  • Classeur3_20060213174800.zip
    8 KB · Affichages: 17

Statistiques des forums

Discussions
312 546
Messages
2 089 489
Membres
104 185
dernier inscrit
Daniel RONNA