Copie automatique de certains champs d'une ligne

G

Gerard

Guest
Bonjour à tous et à toutes, Bonjour forum !!

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]
 

Pièces jointes

  • essais_20050713111823.zip
    13.5 KB · Affichages: 34
G

gerard

Guest
Re:Copie automatique de certains champs d'une lign

J'en appele aux pros d'excel !
Quelqu'un serait-il capable de créer une macro permettant de copier chaque ligne d'une feuille même si ladite ligne comprend une cellule fusionnée ?

Merci
 

ZZR09

XLDnaute Occasionnel
Re:Copie automatique de certains champs d'une lign

Bonjour Gérard

J'ai suivi ton fil mais il faudrait que tu réponde à cette question déjà posée et citée ce-dessous pour m'aider à comprendre ce que tu veux faire.

...

Quel est le cas?

Je suis loin des pros de la macro, mais j'ai quelques notions.
A+


ZZR09 écrit:
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.

Quel sera le cas?

A+
 

le Fnake

XLDnaute Junior
Re:Copie automatique de certains champs d'une lign

bonjour Gérard, ZZR09, le forum

je pense aussi qu'une telle solution pourrait marcher, à condition de combiner suffisament les tests.
En fait le principe est de tester si la cellule qui nous intéresse est vide ou pas. Si oui, on teste la cellule du dessus et ainsi de suite jusqu'à en trouver une non vide.
Par exemple, tu peux mettre en B17 de la feuille2 :
=SI(feuille1!A17='';SI(feuille1!A16='';feuille1!A15;feuille1!A16);feuille1!A17)

Apres, si tes cellules fusionnées recouvrent plus de lignes, tu peux rajouter plus de SI imbriqués, mais ca risque de devenir pas tres compréhensible au bout d'un moment :pinch:

Ensuite, ya plus qu'à étendre la formule et hop le tour est joué. Au passage, pour éviter de voir des 0 apparaitre à la place de cellules vides, tu peux rajouter au début de tes formules un ''& (ce qui donnerait donc des formules du type =''&SI(...) ), cette méthode ayant l'avantage de ne pas rajouter un test ;)

Par contre, je viens de penser que les cellules qui sont fusionnées sur la feuille1 ne le seront pas sur la feuille2... La seule solution pour préserver le 'fusionnage' serait donc de passer par une macro...

Message édité par: le Fnake, à: 18/07/2005 14:02
 
G

gerard

Guest
Re:Copie automatique de certains champs d'une lign

A ZZR 09 !!! et à tous le forum !!

Merci de vous etes attardé à mon problème, c vraiment gentil !! Cependant je ne comprends pas la question de ZZR 09 je vais donc essayer de réitérer ma question !!

Donc voila, je souhaite copier certains champs d'une ligne (compris ds une certaine feuille) pour les copier automatiquement dans une autre feuille !!
Aussi, la méthode consistant a utiliser la formule =SI(A16='';'';Feuill1!A$16) fonctionne sauf pour la première colonne. En effet la première colonne est , à certaines lignes) fusionnées mais pas selon une périodicité précise (pas tout les 3 lignes ...) cela dépend du nombre de lignes que l'utilisateur rempliera pour n même item (j'entends par item une données figurant dans une liste déroulante de la colonne 1)

Donc, pour répondre à la question il n'y a pas de périodicité, c'est variable fonction du nombre de lignes remplies par l'utilisateur , et la fusion des cellules n'est entreprise juste dans un souci de claireté et pour ne pas voir apparaitre dans 3, 4 voire 5 lignes de la colonnes 1 en suivants la même inscription !!

En espérant ne pas vous avoir chamboulé la tête
Merci encore
 

le Fnake

XLDnaute Junior
Re:Copie automatique de certains champs d'une lign

saloperie de PJ qui veut pas passer :angry: [file name=essais2_20050718214243.zip size=14647]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/essais2_20050718214243.zip[/file]

Message édité par: le Fnake, à: 18/07/2005 21:42
 

Pièces jointes

  • essais2_20050718214243.zip
    14.3 KB · Affichages: 24
G

gerard

Guest
Re:Copie automatique de certains champs d'une lign

Bonjour à tous, bonjour forum !!

Message à destination de tous et en particulier à le fnake !!

Merci au fnake pour m'avoir aidé ds mon projet c très gentil !! Cependant il semble avoir une erreur ds la macro puisque lorsque je remplie la feuille 1 la boite de dialogue s'ouvre et me souligne en jaune le première ligne comme suit !!


Private Sub Worksheet_Change(ByVal Target As Range)
' copie les valeurs à chaque modification de la feuille1
Dim i As Integer, col As Integer
i = Target.Row: col = Target.Column
If col = 1 Or col = 2 Or col = 10 Then
'ne considère que les modifications intervenues dans les colonnes A,B et J
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('C' & i) = Range('feuille1!J' & i).Value
If Range('feuille1!A' & i).Value <> '' Then
'copie simple de la valeur
Worksheets('feuille2').Range('B' & i) = Range('feuille1!A' & i).Value
Else:
Application.Run 'fusion', i
End If
End If
Target.Show
End Sub

Merci encore pour ton aide !!

PS : Serait-il possible de voir cela ensemble en te transmettant mon adresse e-mail et te soumettant mon projet entier ?
 

le Fnake

XLDnaute Junior
Re:Copie automatique de certains champs d'une lign

Bonjour gerard, le forum

En effet, il manque un 'End If' tout à la fin. ca doit donc donner
Code:
            Application.Run 'fusion', i
        End If
    Target.Show
    End If
End If
End Sub

pour ce qui est de t'aider sur ton projet, on peut éventuellement voir ca ensemble si tu veux (mon adresse mail doit etre dans mon profil), mais j'ai pas tout mon temps non plus :p

Edit: bon en fait non mon adresse mail n'apparait pas dans le profil, donc c'est lefnake at cegetel.net (ou par messages privés)

Message édité par: le Fnake, à: 19/07/2005 10:38
 

Discussions similaires

Réponses
24
Affichages
502

Statistiques des forums

Discussions
312 493
Messages
2 088 952
Membres
103 989
dernier inscrit
jralonso