Je me permets de soumettre une difficulté qui se pose à moi, débutant Excel et en grande difficulté (et aussi en stage, malheureusement
:huh:
Je remercie d'avance quiconque qui pourrait m'aider !!
Voilà, je souhaiterais copier automatiquement certaines champs d'une ligne afin de les incorporer directement dans une autre feuille.
Ainsi, pour exemple, Je souhaite copier automatiquement les champs A16, B16 et J16 d'une feuille 1 vers la feuille 2 respectivement aux champs B16 (pour A16, feuille1), A16 (pour B16, feuillle1) et C16 (pour J16, feuille1)
CECI POUR L'ENSEMBLE DES LIGNES DE LA FEUILLE 1 !!
Si qq'un à une idée ca serait gentil merci!!
Bonne continuation à votre site ! [file name=essais_20050713111823.zip size=13871]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/essais_20050713111823.zip[/file]
Désolé de ne pouvoir t'aider car moi aussi je suis débutant, par contre ton exemple serait susceptible de m'interesser si quelqu'un c'est comment faire ca (à l aide d'une macro !)
Re:Copie automatique de certains champs d'une lign
Bonjour Gerar, tifou, le forum
Etant ya pas si lgtps dans le meme cas que vous, je vous propose ces quelques solutions (en espérant avoir bien interprété le pbm) :
1°/ quand tu dis 'copier automatiquement', tu sous-entends copier dès qu'une valeur est modifiée dans la feuille, c'est ca ? Dans ce cas, tu peux essayer (à insérer comme macro de la feuille1) :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
' copie les valeurs à chaque modification de la feuille1
Dim i As Integer
i = Target.Row
If i > 15 Then
'en supposant qu'on ne prend pas en compte les modifications intervenues sur les lignes 1 à 15
Worksheets('feuille2').Range('A' & i) = Range('feuille1!B' & i).Value
Worksheets('feuille2').Range('B' & i) = Range('feuille1!A' & i).Value
Worksheets('feuille2').Range('C' & i) = Range('feuille1!J' & i).Value
End If
End Sub
Par contre j'ai pas l'habitude d'utiliser ce genre de truc, donc ca pourrait etre génant en fait. A voir
2°/ Dans le même style, si tu comptes copier tes données une fois pour toute et pas à chaque modification, une macro à créer dans un module :
Code:
Sub Copie_Ligne()
'copie tout au moment du lancement de la macro
Dim i As Integer
For i = 16 To Range('feuille1!A16').End(xlDown).Row
Range('feuille2!A' & i) = Range('feuille1!B' & i).Value
Range('feuille2!B' & i) = Range('feuille1!A' & i).Value
Range('feuille2!C' & i) = Range('feuille1!J' & i).Value
Next i
End Sub
3°/ en insérant des formules sur la feuille2 puis en étendant la formule sur toutes les lignes : par exemple, en B16 tu mets =''&feuille1!A16, ce qui te permet d'avoir une cellule vide et non un 0 si la cellule A16 est vide.
Voila, j'espere que ca pourra t'aider.
Bon courage.
Le fichier va t-il passer ? [file name=essais_bis.zip size=13038]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/essais_bis.zip[/file]
exactement, ca correspond en gros à ma 3e solution. La solution avec le 'SI' est la plus naturelle, c'est celle que j'aurais donné si je n'avais pas juste découvert celle que j'ai proposé plus haut :lol: Bon après, je sais pas trop ce qu'elle vaut, si ce n'est qu'elle ne considère qu'une seule fois la valeur de la cellule, alors qu'avec le SI, il fait d'abord le test puis copie la valeur Enfin le gain en temps doit approchement le millième de seconde, ce peut sembler négligeable
Re:Copie automatique de certains champs d'une lign
Effectivement, je ne connaissais pas la solution =''&...
J'avais l'habitude de faire avec SI, sans me poser plus de questions.
J'essaierai à l'occasion!
C'est bien Excel ... Il y a toujours plusieurs solutions à un problème.
Re:Copie automatique de certains champs d'une lign
Si la première colone de la 1ère feuille (celle qui est fusionnée) est toujours la même, tu peux utiliser les $ pour bloquer la référence de la cellule A16 : A$16
Et pour éviter que cela n'apparaisse partout, tester les cellules vides ailleurs dans le tableau récapitulatif, exemple :
Feuille2, en B16
=SI(A16='';'';Feuill1!A$16)
puis recopie vers le bas
Si l'intitulé change touts les trois lignes tu peux faire une suite du genre deux fois = cellule du haut précédente puis une fois celle qui est trois rangs plus haut etc.
Sinon, si c'est variable, il faudra certainement passer par une macro qui teste la fusion des cellules avant de copier leur contenu.