Transfert de données variables d'un classeur à un autre
Fermé
mad4max2
Messages postés
10
Date d'inscription
vendredi 20 mars 2015
Statut
Membre
Dernière intervention
1 juin 2015
-
20 mars 2015 à 17:50
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 - 21 mars 2015 à 20:21
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 - 21 mars 2015 à 20:21
A voir également:
- Transfert de données variables d'un classeur à un autre
- We transfert - Guide
- Reinstaller windows sans perte de données - Guide
- Effacer les données de navigation - Guide
- Tnt base de données vide ✓ - Forum TNT / Satellite / Réception
2 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
21 mars 2015 à 06:19
21 mars 2015 à 06:19
Bonjour,
sans voir un extrait des classeurs ...
d'autant qu'il parait bizarre un membre occupe 2 lignes dans la liste des membres mais...
mettre les extraits des classeurs sans données confidentielles en pièce jointe sur https://www.cjoint.com/
et coller le lien proposé dans le message de réponse
te
sans voir un extrait des classeurs ...
d'autant qu'il parait bizarre un membre occupe 2 lignes dans la liste des membres mais...
mettre les extraits des classeurs sans données confidentielles en pièce jointe sur https://www.cjoint.com/
et coller le lien proposé dans le message de réponse
te
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
21 mars 2015 à 06:42
21 mars 2015 à 06:42
Bonjour
Si vous êtes novice en VBA. appliquez les consignes suivantes:
Copier le code ci-dessous par CTRL + C
Sur votre classeur excel; faite ALT + F11 (ça ouvre un module VBA)
Collez le texte CTRL + V
Toujours dans le module, faite les actions suivantes "Fichier - Fermer et retourner à Microsoft excel".
maintenant , on va ajouter un objet qui appellera la macro.
Sur la feuille ConfRésiliation, Ajoutez un objet quelconque, par exemple une zone de texte (en sélectionnant dans le ruban Insertion puis zone de texte. collez cette zone de texte sur votre feuille, ajustez la taille de telle manière qu'elle ne vous cache pas trop vos cellules). Mettez y comme texte par exemple "Recopie" puis clic droit sur cette zone de texte et sélectionnez "Affecter une macro". Cliquez une seule fois sur le nom de la macro "Recopie" puis OK.
Voilà, à partir de maintenant, positionnez vous sur la cellule de la colonne F de votre choix, puis cliquez sur le bouton "Recopie", la valeur de la colonne R de la même ligne est recopiée dans "Elements" à l'adresse indiquée.
Bonne journée
Cdlt
Si vous êtes novice en VBA. appliquez les consignes suivantes:
Copier le code ci-dessous par CTRL + C
Sub Recopie() Application.ScreenUpdating = False Sheets("ConfRésiliation").Select 'Si la colonne sélectionnée est différente de la colonne F ou 'si la ligne sélectionnée est la une,on sort du programme If ActiveCell.Column <> 6 Or ActiveCell.Row = 1 Then Exit Sub 'si la cellule sélectionnée est vide, on sort du programme If ActiveCell.Value = "" Then Exit Sub 'on récupère l'information de la cellule sélectionnée ValeurARecopier = Cells(ActiveCell.Row, 6) 'on récupère l'adresse de la cellule de recopie AdresseDeRecopie = Cells(ActiveCell.Row, 18) Sheets("Membres").Select 'on colle la valeur Range(AdresseDeRecopie).Value = ValeurARecopier End Sub
Sur votre classeur excel; faite ALT + F11 (ça ouvre un module VBA)
Collez le texte CTRL + V
Toujours dans le module, faite les actions suivantes "Fichier - Fermer et retourner à Microsoft excel".
maintenant , on va ajouter un objet qui appellera la macro.
Sur la feuille ConfRésiliation, Ajoutez un objet quelconque, par exemple une zone de texte (en sélectionnant dans le ruban Insertion puis zone de texte. collez cette zone de texte sur votre feuille, ajustez la taille de telle manière qu'elle ne vous cache pas trop vos cellules). Mettez y comme texte par exemple "Recopie" puis clic droit sur cette zone de texte et sélectionnez "Affecter une macro". Cliquez une seule fois sur le nom de la macro "Recopie" puis OK.
Voilà, à partir de maintenant, positionnez vous sur la cellule de la colonne F de votre choix, puis cliquez sur le bouton "Recopie", la valeur de la colonne R de la même ligne est recopiée dans "Elements" à l'adresse indiquée.
Bonne journée
Cdlt
mad4max2
Messages postés
10
Date d'inscription
vendredi 20 mars 2015
Statut
Membre
Dernière intervention
1 juin 2015
21 mars 2015 à 14:05
21 mars 2015 à 14:05
Merci, mais c'est pas tout à fait ça...
Petite précision, je suis novice, mais pas totalement novice... Il y a déjà plusieurs macros qui tournent parfaitement... Mais je ne suis pas encore à l'aise avec toutes les fonctions de VBA....
En effet, je trouve la position où je dois recopier le contenu à partir d'une cellule spécifique, par calcul en utilisant une recherche verticale et dont, ensuite, je transforme non pas en contenu, mais en position dans ma table...
Ce qui me donne l'endroit où je dois recopier le contenu de ma cellule.
Donc, j'ai un contenu, l'adresse exacte de la cellule avec ce contenu et l'adresse exacte de destination où le contenu doit être recopié. Simplement je prends une valeur du classeur ConfRésiliation et je dois la mettre dans le classeur Membres à une position trouvée par calcul.
Je n'arrive pas à trouver la fonction exacte... Je pensais mettre:
Sub ChangeStatusMembre()
'
' Macro ChangeStatusMembre
'
'
'
'-----------------------------------------------------------------------------------------------------------+
' Va sur le classeur "Membres"
'-----------------------------------------------------------------------------------------------------------+
'
Sheets("Membres").Select
'
'-----------------------------------------------------------------------------------------------------------+
' Change le contenu des cellules "Type de Contrat" et "Type de Classeur"
'-----------------------------------------------------------------------------------------------------------+
'
Dim ovTypeContrat As String
Dim ovTypeClasseur As String
Dim nvfTypeContrat As String
Dim nvfTypeClasseur As String
With ActiveSheet
ovTypeContrat = Sheets("ConfRésiliation").Range("R24").Value
ovTypeClasseur = Sheets("ConfRésiliation").Range("R25").Value
nvTypeContrat = Sheets("ConfRésiliation").Range("S24").Value
nvTypeClasseur = Sheets("ConfRésiliation").Range("S25").Value
Worksheets("Membres").Range(Cells(ovTypeContrat)) = Worksheets("Membres").Range(Cells(nvTypeContrat))
Worksheets("Membres").Range(Cells(ovTypeClasseur)) = Worksheets("Membres").Range(Cells(nvTypeClasseur))
End With
End Sub
(la commande Worksheets est sur une ligne et non pas sur deux lignes, bien sûr...)
ov suivi de type de contrat ou type de classeur = Ancienne valeur
nv suivi de type de contrat ou type de classeur = Nouvelle valeur
Mais ça ne marche pas... Je dois oublier ou faire faux quelque chose quelque part...
Merci de votre aide...
Petite précision, je suis novice, mais pas totalement novice... Il y a déjà plusieurs macros qui tournent parfaitement... Mais je ne suis pas encore à l'aise avec toutes les fonctions de VBA....
En effet, je trouve la position où je dois recopier le contenu à partir d'une cellule spécifique, par calcul en utilisant une recherche verticale et dont, ensuite, je transforme non pas en contenu, mais en position dans ma table...
Ce qui me donne l'endroit où je dois recopier le contenu de ma cellule.
Donc, j'ai un contenu, l'adresse exacte de la cellule avec ce contenu et l'adresse exacte de destination où le contenu doit être recopié. Simplement je prends une valeur du classeur ConfRésiliation et je dois la mettre dans le classeur Membres à une position trouvée par calcul.
Je n'arrive pas à trouver la fonction exacte... Je pensais mettre:
Sub ChangeStatusMembre()
'
' Macro ChangeStatusMembre
'
'
'
'-----------------------------------------------------------------------------------------------------------+
' Va sur le classeur "Membres"
'-----------------------------------------------------------------------------------------------------------+
'
Sheets("Membres").Select
'
'-----------------------------------------------------------------------------------------------------------+
' Change le contenu des cellules "Type de Contrat" et "Type de Classeur"
'-----------------------------------------------------------------------------------------------------------+
'
Dim ovTypeContrat As String
Dim ovTypeClasseur As String
Dim nvfTypeContrat As String
Dim nvfTypeClasseur As String
With ActiveSheet
ovTypeContrat = Sheets("ConfRésiliation").Range("R24").Value
ovTypeClasseur = Sheets("ConfRésiliation").Range("R25").Value
nvTypeContrat = Sheets("ConfRésiliation").Range("S24").Value
nvTypeClasseur = Sheets("ConfRésiliation").Range("S25").Value
Worksheets("Membres").Range(Cells(ovTypeContrat)) = Worksheets("Membres").Range(Cells(nvTypeContrat))
Worksheets("Membres").Range(Cells(ovTypeClasseur)) = Worksheets("Membres").Range(Cells(nvTypeClasseur))
End With
End Sub
(la commande Worksheets est sur une ligne et non pas sur deux lignes, bien sûr...)
ov suivi de type de contrat ou type de classeur = Ancienne valeur
nv suivi de type de contrat ou type de classeur = Nouvelle valeur
Mais ça ne marche pas... Je dois oublier ou faire faux quelque chose quelque part...
Merci de votre aide...
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
>
mad4max2
Messages postés
10
Date d'inscription
vendredi 20 mars 2015
Statut
Membre
Dernière intervention
1 juin 2015
21 mars 2015 à 20:21
21 mars 2015 à 20:21
Bonsoir
Remplacez les 2 dernières lignes par ceci
cdlt
Remplacez les 2 dernières lignes par ceci
Range(ovTypeContrat).Value = Sheets("ConfRésiliation").Range(nvTypeContrat).Value Range(ovTypeClasseur).Value = Sheets("ConfRésiliation").Range(nvTypeClasseur).Value
cdlt
21 mars 2015 à 13:53
Je me suis peut-être mal exprimé... Chaque membre n'occupe qu'une seule ligne dans le tableau principal... Et le "Type de Contrat" et le "Classeur" sont en colonnes. Colonne B pour "Type de contrat", colonne C pour "Classeur".
Je trouve la ligne du membre, en faisant une "Recherchev".
J'ai une multitude d'onglets. Un pour les contrats, un pour la facture, un pour les rappels, un pour la lettre de confirmation de résiliation, un pour les tarifs, plusieurs pour les Bulletins de versements, etc...
Dans chacun de ces onglets, je mets dans une cellule le numéro du membre, qui lui est, dans la table "Membres", en colonne A. Puis, je récupère les données via une recherche verticale et place le résultat là où il faut.
Dans la question que j'ai posé, je dois faire l'inverse. Soit aller mettre dans les colonnes B & C un texte ou un code que j'entre dans l'onglet "ConfRésiliation" selon les besoins.
En utilisant les fonctions "adresse" et "cell("address", ...) je trouve la position où je dois aller copier ce mon texte.
Et dans ce tableau, j'ai un sous l'autre, le texte. D'où ta surprise de voir les données sur deux lignes.
Le fichier contient une bonne vingtaine de fichiers imbriqués. Difficile d'en faire des extraits.
Voici des Screen Shots du fichier:
https://www.cjoint.com/c/ECvobYBE2Vk
Merci de votre aide!