Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Echange de données entre 2 feuilles

  • Initiateur de la discussion Initiateur de la discussion Izydore
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Izydore

XLDnaute Nouveau
Bonjour,

J'ai un tableau Feuil 1 dont les données s'étendent de B12:U984.

Sur la feuil2 je souhaite copier vers la feuil1 certaines cellules d’une ligne (colonne E et H) si je mets OUI dans la colonne I vers la feuil1 (colonne I et J) uniquement entre les lignes 864 et 984 sur la première ligne vide de la colonne I et renvoyer la valeur de la cellule colonne B feuil1 vers la colonne J feuil 2 de la ligne qui vient d’être copiée.

Mon code copie les cellules pas au bon endroit et je n’arrive pas à récupérer la valeur de la colonne B Feuil1 vers colonne J Feuil2.

Ci-joint un fichier exemple avec une explication sur la feuille 2

Merci pour votre aide
 

Pièces jointes

Solution
Re,
En PJ un essai.
On dispose déjà de toutes les infos, donc c'est simple.
NB : J'ai rajouté une sécurité, car si un bug se produit alors le flag Application.EnableEvents reste à False et on ne pleut plus accéder à la macro.

Et d'ailleurs RechercheV ne marcherait pas car il faudrait que N°Tache soit à droite du critère cherché. Il faudrait utiliser dans ce cas Index Equiv. Mais une ligne de VBA est quand même plus "élégant".🙂
Bonjour Izodore,
un essai en PJ, j'ai un peu remanié votre macro :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("I3:I65535")) Is Nothing Then
    If Target.Value = "OUI" Then
        With Sheets("Feuil1")
            ligvide = .Range("I863:I65535").End(xlDown).Row + 1
            .Cells(ligvide, 10) = Cells(Target.Row, 5)  ' Copie valeur colonne E
            .Cells(ligvide, 9) = Cells(Target.Row, 8)   ' Copie valeur colonne H
            .Cells(ligvide, 4).Value = Format(Date, "mm/dd/yyyy")
        End With
    End If
End If
End Sub
 

Pièces jointes

Bonjour sylvanu,
J'ai essayé la modification, mais si je supprime les données de la feuille 1 (ligne 864) , j'ai une erreur d'exécution 1004.
Il n'y a pas le retour d'information de la cellule D feuille 1 vers la feuille 2 colonne J.
merci
 
La ligne 864 étant occupée, je l'ai considéré comme telle.
Remplacez la ligne 5 par :
VB:
ligvide = 864 + Application.CountIf(.Range("I864:I65535"), "*")
cela suppose qu'il n'y a pas de lignes vides entre les lignes remplies.
 
J'ai testé le code, c'est bon si je n'ai pas de ligne vide sur la feuille 1, sinon la copie se fait toujours sur la même ligne. Le problème c'est que mon tableau de la feuille 1 varie une fois par mois, toutes les lignes de travaux effectués sont supprimées. la solution n'est pas simple.
 
Bonjour Sylvanu,
Je me suis peut être mal expliqué : sur la feuille 1 je suis à même d'effacer des lignes copiées. Lorsqu'il y a une ligne vide entre 2 lignes, le code remplace la dernière ligne écrite. Il faudrait pouvoir rechercher les lignes vides entre les lignes.
Dans l'exemple ci joint, la ligne 865 est vide et (864 et 866 remplie). A chaque fois que je vais mettre oui la ligne 866 sera écraser par la nouvelle.
J'ai modifier le début du code pour la recherche de la conditions "OUI" car cela me générer une erreur dans une autre macro.
Ci joint le fichier
 

Pièces jointes

Bonjour Izodore,
J'avais vraiment pas compris que vous effaciez des lignes dans feuil1.
En PJ un essai.
En fait je part simplement de la ligne 864 jusqu'à 984 et je cherche la première cellule J vide.
Merci,
Le premier point de ma demande fonctionne.
Pour le second, dois je faire un autre poste ou pouvons continuer.
Explication :
Dans l'exemple : Si je mets I6 (feuil2)=OUI cela copie la ligne dans la feuille 1 (exemple 864).
Alors il faut récupérer la valeur de la cellule B864 feuille 1 et la copier dans la cellule J6 feuille 2.
j'ai mis en surbrillance vert l'échange d'information.
Sinon je peux faire un rechercheV ?
Merci
 

Pièces jointes

Re,
En PJ un essai.
On dispose déjà de toutes les infos, donc c'est simple.
NB : J'ai rajouté une sécurité, car si un bug se produit alors le flag Application.EnableEvents reste à False et on ne pleut plus accéder à la macro.

Et d'ailleurs RechercheV ne marcherait pas car il faudrait que N°Tache soit à droite du critère cherché. Il faudrait utiliser dans ce cas Index Equiv. Mais une ligne de VBA est quand même plus "élégant".🙂
 

Pièces jointes

En effet depuis ce matin je cherchais une solution avec rechercheV mais en vain.
Merci beaucoup pour ton aide.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…