faire migrer des données d'une feuille à une autre de manière condtionnelle

yogi

XLDnaute Nouveau
Bonjour,

je n'ai pas encore créer mon fichier, mais je fais des petits essais non concluants.
Il y a des données dans la "Feuil1" du style :
"Nom" "Prénom" " Date de naissance" "âge".............."à transférer"

lorsque dans une ligne la cellule de la colonne à transférer est renseignée (par un "1" par exemple) il faudrait que les données des cellules des colonnes Nom, Prénom, date de naissance (l'âge peut être recalculé) migrent vers la "Feuil 2" dans la première ligne vide de la feuille (donc au bas d'une liste déjà constituée).

Ma macro devra être actionnée en cliquant sur un bouton, elle vérifiera toutes les lignes de la "Feuil1" et enverra toutes les lignes qui le nécessite vers la "Feuil2".
ensuite les lignes transférées seront supprimées de la "Feuil1" et il ne devrait pas y avoir de lignes vide dans la liste à la fin de l'exécution.

j'ai réussit à passer des données d'une feuille à une autre en utilisant la fonction copier/coller.
faire remonter les données dans la "Feuil2" jusqu'à la 1ère ligne vide. Pour le reste je patauge.

Merci et bonne soirée
 

Pierrot93

XLDnaute Barbatruc
Re : faire migrer des données d'une feuille à une autre de manière condtionnelle

Bonjour,

regarde ceci, si cela peut t'aider :
Code:
Option Explicit
Sub test()
Dim i As Long
With Sheets("Feuil1")
    For i = .Range("B65536").End(xlUp).Row To 1 Step -1
        If .Cells(i, 1).Value = 1 Then
            .Cells(i, 2).Resize(1, 3).Copy Destination:=Sheets("Feuil2").Range("A65536").End(xlUp)(2)
            .Rows(i).Delete
        End If
    Next i
End With
End Sub

bonne journée
@+
 

yogi

XLDnaute Nouveau
Re : faire migrer des données d'une feuille à une autre de manière condtionnelle

merci beaucoup Pierrot 93.
J'ai essayé d'utiliser ton code, mais il ne se passe absolument rien.
Si' j'ai bien compris la colonne qui doit contenir "1" (ou rien) est la colonne B. Quoiqu'il en soit j'ai essayé de mettre "1" dans d'autres colonnes sans plus de résultat.
 

yogi

XLDnaute Nouveau
Re : faire migrer des données d'une feuille à une autre de manière condtionnelle

:) super!!
ça fonctionne nickel.
Par contre puis je te demander des explications?

à quoi sert "Option Explicit"?
l'objet i est défini comme "long" , je ne comprends pas ce que c'est.

est-ce le "-1" après la fonction step qui défini que c'est la colonne A qui doit contenir le "1", donc colonne b-1.

enfin peux tu me dire et c'est le plus important pur moi, s'il est possible de ne transférer que le contenu des colonnes bc et d par exemple?

merci encore
 

orphelion

XLDnaute Occasionnel
Re : faire migrer des données d'une feuille à une autre de manière condtionnelle

Bonjour Yogi, Bonjour Pierrot93,le fil,

pour repondre a certaines de tes questions Yogi, tu peux aller faire un tour sur le forum section didacticiel ici ou encore sur le site extrement riche d'un membre du forum (Merci BoisGontier :) ) VBA - section programmation.

Note qu'un fichier est toujours le bienvenu pour que les personens sur le forum te viennent en aide. Nous ne sommes pas tous aussi patient (et competent) que Pierrot93.
Bonne lecture :)
A+
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : faire migrer des données d'une feuille à une autre de manière condtionnelle

Bonjour Yogi,

à quoi sert "Option Explicit"?
Oblige à la déclaration de toutes les variables, ceci évite bien des erreurs...

l'objet i est défini comme "long" , je ne comprends pas ce que c'est.
c'est le type de donnée associé à la variable i, comme celle-ci servira de "compteur" pour les lignes mieux vaut utiliser le même type que celui renvoyé par la propriété "row"...

est-ce le "-1" après la fonction step qui défini que c'est la colonne A qui doit contenir le "1", donc colonne b-1.
le -1 est le pas effectuée par la boucle, en l'occurence on commence par la dernière ligne, on teste et action éventuelle de suppression, et on remonte, si on ne procède pas ainsi, en redescendant on sauterait des lignes au cas où te test serait vérifié 2 fois de suite...

enfin peux tu me dire et c'est le plus important pur moi, s'il est possible de ne transférer que le contenu des colonnes bc et d par exemple?
si tu ce que tu veux dire, c'est copier uniquement les valeurs des cellules, modifie comme suit :

Code:
Option Explicit
Sub test()
Dim i As Long
With Sheets("Feuil1")
    For i = .Range("B65536").End(xlUp).Row To 1 Step -1
        If .Cells(i, 1).Value = 1 Then
            .Cells(i, 2).Resize(1, 3).Copy
            Sheets("Feuil2").Range("A65536").End(xlUp)(2).PasteSpecial xlPasteValues
            .Rows(i).Delete
        End If
    Next i
End With
End Sub

bonne journée
@+
 

yogi

XLDnaute Nouveau
Re : faire migrer des données d'une feuille à une autre de manière condtionnelle

Bonjour,

Tout d'abord un grand merci à toi Pierrot 93. J'ai mis un peu de temps à répondre car j'ai cherché à comprendre et à adapter ton code. C'est maintenant chose faite et ça fonctionne du feu de dieu.

Orphelion, merci pour tes liens que j'ai parcouru avec beaucoup d'intérêt, qui m'ont appris beaucoup et ce n'est pas fini!
Par contre j'ai le sentiment que tu as été un tantinet agacé par ma demande à Pierrot.
Le principe de la demande est que celui à qui elle se destine à la possibilité de refuser et j'aurais tout à fait compris si Pierrot n'avait pas répondu. J'ai apprécié sa patience, ses compétences et surtout son efficacité.
Pour ce qui est du fichier en pièce jointe, j'ai bien précisé dans ma 1ère intervention que j'étais en phase de projet. Je me suis permis d'ouvrir cette discussion car je pouvais exprimer assez simplement ce que je cherchais à faire.
j'ai pris bonne note de tes remarques.

Bonne soirée
 

orphelion

XLDnaute Occasionnel
Re : faire migrer des données d'une feuille à une autre de manière condtionnelle

Mon bon Yogi,
aucun souci de mon cote, je suis le premier a apprecier les reponses de Pierrot93 (et de bien d'autres contributeurs de ce forum).
Je t'ai fait part des liens pour te donner plus d'idees dans tes prochains 'exercices' excel et te permettre de lire plus facilement les codes. Les possibilites sont innombrables et cela fait parti du plaisir et de l'entente sous entendu sur le forum, que de mettre les demandeurs un minimum a contribution pour leur propre benefice :)
Dans tous les cas merci Pierrot pour l'explication c'est toujours tres clair :)
a+
 

yogi

XLDnaute Nouveau
Re : faire migrer des données d'une feuille à une autre de manière condtionnelle

tout à fait d'accord avec l'esprit du forum.
Si le demandeur n'a pas fait un minimum de travail, le forum devient un prestataire de service ...gratuit.
Comme tu as pu le lire, avant de poster j'avais longuement cherché comment faire, et mes résultats étaient pour le moins exotique! :eek:
 

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 461
dernier inscrit
dams94