Report Donnees + recopie si...

  • Initiateur de la discussion Xavier
  • Date de début
X

Xavier

Guest
Bonjour le forum,

J`ai ouie dire qu`on pourrait m`aider alors je viens car j`ai besoin d`aide... faut bien apprendre :)

J`ai bien cherche des exemples sur le site (et j`en ai trouve) mais ca fait pas ce que je veux

je veux envoyer des donnees d`une feuilles a une autre mais en plus si la personne pour laquelle j`envoie les infos a un assistant, je veux que le nom de l`assitant s`ajoute a la liste qui recupere les envois et qu`en plus les parametres de son superieur soient reportes

J`ai fait un exemple que j`espere assez clair

Merci pour votre aide / vos propositions / morceaux de code

A+

Xavier [file name=Envoidataconditionnel.zip size=6721]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Envoidataconditionnel.zip[/file]
 

Pièces jointes

  • Envoidataconditionnel.zip
    6.6 KB · Affichages: 16

Dan

XLDnaute Barbatruc
Bonsoir,

Après avoir regradé ton fichier remplace ta macrro par ceelle ci-dessous :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim WSCible As Worksheet
Dim Plage As Range, cell As Range
Dim C As Byte, L As Integer, x As Integer

Set WSCible = Worksheets('Resultats')
Set Plage = Sheets('Grille saisie').Range(Range('O3'), Range('O5000').End(xlUp))
L = 4
If Application.Intersect(Target, Plage) Is Nothing Then Exit Sub
Leon 'Le Nettoyeur !!
With Sheets('Grille saisie')
    For Each cell In Plage
    If cell.Value = 1 Then
      x = 0
        For C = 2 To 9
           x = IIf(C > 6, C + 1, C)
            WSCible.Cells(L, x + 4) = Cells(cell.Row, C)
        Next C
        L = L + 3
    End If
    Next cell
    End With
End Sub

Les corrections :
- Dans Set Plage --> range('O3') à la place de O2
- Modification de l'insctruction --> If Application.Intersect(Target, Plage)
- Ajoute de With Sheets('Grille saisie') après Leon + End with avant End sub

Si pb n'hésite pas

;)
 
X

Xavier

Guest
Bonsoir Dan,

Merci pour ta proposition d`aide mais ta macro je vois pas trop. Pour o3 , ben j`ai rien en O3

Je sais que c`est ose mais tu peux essayer sur mon file et le coller car je comprends pas ton code ds ma situation :unsure:

For C = 2 To 9 ben j`ai pas autant de colonnes

Bref j`y arrive pas

Merci Dan

Xavier
 

Dan

XLDnaute Barbatruc
Bonsoir Xavier,

:sick: Et c'est un Zop !!

Toutes mes excuses d'être venu polluer ton fil avec cette réponse qui n'a rien avoir avec ta demande.
En effet, j'ai répondu en vitesse pour un autre fil dont la demande était semblable. :unsure:

Je vais donc voir si un modérateur de ce forum peut éventuellement supprimer nos deux dernières réponses et pour ne laisser que ta demande.

A bientôt
 
X

Xavier

Guest
Bonsoir Dan,

je me disais aussi :)

Je suis pas un pro de VBA mais je reconnaissais rien qui reponde a ce que je cherche, boucle, if then....

Merci quand meme, tu aides tellement de gens - bon a moi tu m`enfonces :silly:

A+

Xavier
 

Dan

XLDnaute Barbatruc
Bonsoir,

Et bien Xavier, cette macro était relative à un fil qui a été supprimé je pense.

Heureusement grâce à mon ami Didier_mDF, nous avons pu retrouver que mon post concernait ce fil qui a été conservé --> Lien supprimé.

Bon je vais tout de même essayer de voir si je peux trouver quelque chose pour toi mais au premier abord, cela me semble plus compliqué.

Peut être un autre forumeur ?

A bientôt

;)
 
X

Xavier

Guest
Bonsoir Dan,

t`inquiete pas pour le fil. J`aime bien ta tete de panthere rose

:)

Si tu epux m`aider tant mieux mais sinon tant pis, j`aurais essaye. J`imagine que c`est tres complique. D`ailleurs personne n`a trouve de solution semble-t`il.
Heureusement que t`es la pour animer mon fil :lol:


Merci

Xavier
 

Brigitte

XLDnaute Barbatruc
Bonsoir,


Je sais pas si tu vas aimer ma tête de deux ans à moi, mais voilà une macro qui devrait t'aider :

Private Sub CommandButton1_Click()
Dim c As Range
Dim ligne As Integer
Dim cell As Range

ligne = 1

For Each c In Range('a2:a' & Range('a65536').End(xlUp).Row)
With Sheets('result')
.Cells(ligne, 1) = c
.Cells(ligne, 2) = c.Offset(0, 1)
.Cells(ligne, 3) = c.Offset(0, 2)
ligne = ligne + 1
End With

With Sheets('liste')
For Each cell In .Range('a2:a' & .Range('a65536').End(xlUp).Row)
If cell = c Then
Sheets('result').Cells(ligne, 1) = cell.Offset(0, 1)
Sheets('result').Cells(ligne, 2) = c.Offset(0, 1)
Sheets('result').Cells(ligne, 3) = c.Offset(0, 2)
ligne = ligne + 1
End If
Next cell
End With

Next c
End Sub


Voilà, espérant t'avoir aidé...


PS : je sais, je sais, ca vous étonne, mais vous savez, j'ai plus d'un tour dans mon sac. Là je vous laisse, j'ai RV tout de suite....

Message édité par: Brigitte, à: 11/03/2006 23:03
 

Brigitte

XLDnaute Barbatruc
Bonjour à tous,


Et oui, vous l'aviez sans doute compris. Cette macro n'est pas de moi, mais Hervé (mon fameux RV, arf), dans sa grande discrétion, ne voulait pas poster, alors pour que le schmilblick avance, je l'ai fait à sa demande... et aussi pour blaguer.

Mais je ne peux garder le silence devant cette imposture trop longtemps sinon certains vont rien comprendre : Brigitte qui fait des macros, alors ca !!!


B)

Bon dimanche à tous.
 
X

Xavier

Guest
Bonjour Brigitte,

Merci pour ta macro... et merci pour Herve qui est moins timide que toi. Heureusement qu`il y a des petites jeunes de 2 ans pour deposer des solutions.

Apres la panthere rose, avoir une jeune fille de 2 ans qui intervienne ne me gene pas. On voit de tout sur ce site.

Et pour info t`es toute mignonne.

:kiss:

Je te remercie et fait attention sur internet de ne pas renconrer de gens bizarres.

C`est super!

Je peux te faire une bise??

A++


Xavier
 

Dan

XLDnaute Barbatruc
Re,

D'abord merci à Hervé que j'ai rencontré sur Skype hier soir et à qui j'ai demandé de venir t'aider un petit peu.

Dans la macro de Hervé à cette endroit :
Code:
... if cell = c Then 
Sheets('result').Cells(ligne, 1) = cell.Offset(0, 1) 
Sheets('result').Cells(ligne, 2) = c.Offset(0, 1) 
Sheets('result').Cells(ligne, 3) = c.Offset(0, 2) 
ligne = ligne + 1

tu peux mettre ceci :
Code:
if cell = c Then
with Sheets('result')
  .Cells(ligne, 1) = cell.Offset(0, 1) 
  .Cells(ligne, 2) = c.Offset(0, 1) 
  .Cells(ligne, 3) = c.Offset(0, 2)
End with
ligne = ligne + 1 
End If

A bientôt

;)
 
X

Xavier

Guest
Bonsoir Dan,

merci beaucoup, tu laches pas le morceau. C`est sympa... et puis tjs ce fameux Herve ;)

Question que je me pose :
Ds mon exemple je copie les valeurs de 2 colonnes d`ou c.offset (0,1) ou (0,2)

Par contre si je copie des valeurs de 20 colonnes, je dois mettre (0,1)...(0,20)ou il y a une autre solution selon toi?

Merci

Xavier
 

Hervé

XLDnaute Barbatruc
BOnsoir brigitte, xavier, dan

hop, me voici.

oui tu peux imaginer une boucle, du style (en reprenant la macro de dan) :


If cell = c Then
       
With Sheets('result')
                .Cells(ligne, 1) = cell.Offset(0, 1)
               
For i = 1 To 20
                        .Cells(ligne, i + 1) = c.Offset(0, i)
               
Next i
       
End With
ligne = ligne + 1
End If

salut
 

Dan

XLDnaute Barbatruc
re,

eh ben, voilà Hervé ! il était temps tout de même... :)

Xavier, non je ne lâche pas le morceau comme tu dis. On aide ou on aide pas mais dans tous les cas, il faut rester correct avec les gens.

Réponse sur le post de Hervé.

;)
 

Brigitte

XLDnaute Barbatruc
Alors heureux, les copains ?

Ca fait plaisir de voir toute cette agitation neuronale (euh ca se dit ca ?) autour de Xavier.

Mais dis moi Xavier t'as mis quoi dans leur biberon ou dans ton fichier de départ : un coup de duvel, un billet ?

Bon courage à vous tous, moi ca me dépasse.

En fait, je suis sûre que tout ca ne veut rien dire, c'est juste pour épater les petites filles de deux ans, comme moi ! :)

Merci de ta bonne humeur Xavier. Les deux autres larrons, je les connais, mais ca fait tjs plaisir de voir adhérer un nouveau à notre humour.

Message édité par: Brigitte, à: 12/03/2006 20:25
 

Discussions similaires

Statistiques des forums

Discussions
312 610
Messages
2 090 208
Membres
104 452
dernier inscrit
hamzamounir