Copier/Coller de valeurs sous conditions
Résolu/Fermé
Bendit0044
Messages postés
7
Date d'inscription
mercredi 22 avril 2015
Statut
Membre
Dernière intervention
4 novembre 2015
-
1 juin 2015 à 09:53
Bendit0044 Messages postés 7 Date d'inscription mercredi 22 avril 2015 Statut Membre Dernière intervention 4 novembre 2015 - 4 nov. 2015 à 15:26
Bendit0044 Messages postés 7 Date d'inscription mercredi 22 avril 2015 Statut Membre Dernière intervention 4 novembre 2015 - 4 nov. 2015 à 15:26
A voir également:
- Copier/Coller de valeurs sous conditions
- Copier coller pdf - Guide
- Historique copier-coller android - Guide
- Dessin sms copier coller zizi ✓ - Forum Réseaux sociaux
- Copier-coller - Accueil - Informatique
- Symbole clavier copier coller - Guide
5 réponses
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
1 juin 2015 à 17:22
1 juin 2015 à 17:22
Bonjour Sylain,
Pas très clair tous ça !...
Dans quel onglet du fichier "base de données"se trouvent les lignes ?
Dans quel onglet, puis dans quelle cellule cet onglet l'utilisateur rentre-t-il la référence ?
À partir de quelle cellule doit-on copier les lignes ?
Le copier/coller se fera via un bouton ou à l'édition de la fameuse cellule ?
Pas très clair tous ça !...
Dans quel onglet du fichier "base de données"se trouvent les lignes ?
Dans quel onglet, puis dans quelle cellule cet onglet l'utilisateur rentre-t-il la référence ?
À partir de quelle cellule doit-on copier les lignes ?
Le copier/coller se fera via un bouton ou à l'édition de la fameuse cellule ?
Bendit0044
Messages postés
7
Date d'inscription
mercredi 22 avril 2015
Statut
Membre
Dernière intervention
4 novembre 2015
1 juin 2015 à 17:46
1 juin 2015 à 17:46
Bonjour ThauTheme,
Le fichier "base de données" se trouve à l'adresse suivante
C:\Users\10147920\Desktop\Lean project\Miniflow\DataBase Part Price.xlsx
L'onglet dans lequel il se trouve est le seul du fichier et il se nomme "DataBase".
La référence se trouve dans le fichier C:\Users\10147920\Desktop\Lean project\Lean Project - SB.xlms
dans l'onglet "General"
Dans la cellule D23.
J'aimerai copier les lignes dans l'onglet "Calcul prix pièce" à partir de la cellule B17 (Cet onglet est dans le fichier Lean Project - SB.xlms).
Je pensais mettre un bouton et lancer la macro une fois la saisie terminée.
Voila j'espère que c'est un peu plus clair.
Merci encore.
Sylvain
Le fichier "base de données" se trouve à l'adresse suivante
C:\Users\10147920\Desktop\Lean project\Miniflow\DataBase Part Price.xlsx
L'onglet dans lequel il se trouve est le seul du fichier et il se nomme "DataBase".
La référence se trouve dans le fichier C:\Users\10147920\Desktop\Lean project\Lean Project - SB.xlms
dans l'onglet "General"
Dans la cellule D23.
J'aimerai copier les lignes dans l'onglet "Calcul prix pièce" à partir de la cellule B17 (Cet onglet est dans le fichier Lean Project - SB.xlms).
Je pensais mettre un bouton et lancer la macro une fois la saisie terminée.
Voila j'espère que c'est un peu plus clair.
Merci encore.
Sylvain
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
1 juin 2015 à 23:12
1 juin 2015 à 23:12
Bonsoir Sylvain, bonsoir le forum,
Le code ci-dessous est à placer dans l'onglet General. C'est la macro événementielle Change qui va réagir automatiquement à chaque changement dans cet onglet. Cela évite un bouton...
J'ai utilisé un filtre avancé qui va écrire des données à partir de AA1 de l'onglet DataBase puis va les effacer. Attention ! Si ces cellules contiennent déjà des valeurs il faudra modifié le code...
Tu tapes la référence dans la cellule D23 de l'onglet General et automatiquement le copier/coller des lignes contenant cette référence se fait à partir de B17 de l'onglet Calcul prix pièce.
Le code :
Le code ci-dessous est à placer dans l'onglet General. C'est la macro événementielle Change qui va réagir automatiquement à chaque changement dans cet onglet. Cela évite un bouton...
J'ai utilisé un filtre avancé qui va écrire des données à partir de AA1 de l'onglet DataBase puis va les effacer. Attention ! Si ces cellules contiennent déjà des valeurs il faudra modifié le code...
Tu tapes la référence dans la cellule D23 de l'onglet General et automatiquement le copier/coller des lignes contenant cette référence se fait à partir de B17 de l'onglet Calcul prix pièce.
Le code :
Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet Dim CD As Workbook 'déclare la variable CD (Classeur Destination) Dim OD As Worksheet 'déclare la variable OD (Onglet Destination) Dim CS As Workbook 'déclare la variable CS (Classeur Source) Dim OS As Worksheet 'déclare la variable OS (Onglet Source) Dim PL As Range 'déclare la variable PL (PLage) If Target.Address <> "$D$23" Then Exit Sub 'si le changement a lieu ailleurs que dans la cellule D23, sort de la procédure Set CD = ThisWorkbook 'définit le classeur destination CD Set OD = CD.Sheets("Calcul prix pièce") 'définit l'onglet destination OD On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante) Set CS = Workbooks("DataBase Part Price.xlsx") 'définit le classeur source (génère une erreur si le classeur n'est pas ouvert) If Err <> 0 Then 'condition : si une erreur a été générée Err.Clear 'efface l'erreur Workbooks.Open ("C:\Users\10147920\Desktop\Lean project\Miniflow\DataBase Part Price.xlsx") 'ouvre le classeur Set CS = ActiveWorkbook 'définit le classeur source CS End If 'fin de la condition On Error GoTo 0 'annule la gestion des erreurs Set OS = CS.Sheets("DataBase") 'définit l'onglet source OS OD.Range("B17").CurrentRegion.ClearContents 'efface d'éventuelles ancienne données If Target.Value = "" Then Exit Sub 'si D23 est efacée, sort de la procédure Set PL = OS.Range("A1").CurrentRegion 'définit la plage PL (tu ne m'as pas dit où commençaient les donnés j'ai pris A1, tu adapteras) PL.Rows(1).Copy OS.Range("AA1") 'copie en AA1 la première ligne de la plage PL OS.Range("AA2") = Target.Value 'copie en AA2 la valeur éditée dans D23 (cellule cible) On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante) 'filtre avancé de la plage PL par rapport au critère édité en D23 (=AA2), renvoyé à partir de la cellule B17 de l'onglet destination OD PL.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=OS.Range( _ "AA1:AC2"), CopyToRange:=OD.Range("B17"), Unique:=False 'si aucune donnée ne correspond au critère, cela génère une erreur) OS.Range("AA1").CurrentRegion.Clear 'efface les données qui ont permis le filtre avancé End Sub
Bendit0044
Messages postés
7
Date d'inscription
mercredi 22 avril 2015
Statut
Membre
Dernière intervention
4 novembre 2015
2 juin 2015 à 08:41
2 juin 2015 à 08:41
Bonjour ThauTheme,
Je te remercie pour ton code, il fonctionne parfaitement.
Merci beaucoup de ton aide.
Sylvain
Je te remercie pour ton code, il fonctionne parfaitement.
Merci beaucoup de ton aide.
Sylvain
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bendit0044
Messages postés
7
Date d'inscription
mercredi 22 avril 2015
Statut
Membre
Dernière intervention
4 novembre 2015
4 nov. 2015 à 15:26
4 nov. 2015 à 15:26
Bonjour ThauTheme,
Est ce qu'il est possible de modifier ton cade pour réaliser une seconde recherche depuis le cellule D24.
J'ai essayé de le faire, mais je ne parviens a rien...
Je te remercie d'avance,
Sylvain
Est ce qu'il est possible de modifier ton cade pour réaliser une seconde recherche depuis le cellule D24.
J'ai essayé de le faire, mais je ne parviens a rien...
Je te remercie d'avance,
Sylvain