Copier cellule vers une feuille ou une autre suivant critères...

Jeanbulle

XLDnaute Occasionnel
[RESOLU] Copier cellule vers une feuille ou une autre suivant critères...

Bonjour à tous !

Tout dabord, je me permet de vous aduler car beaucoup de message sur ce forum me permette d'avancer dans mes fichiers.
Cependant, betement, sur l'un d'entre eux, je n'arrive pas à avancer.

Explication :
Je travaille dans l'électroménager, et je fais un fichier pour le suivi de mes commandes.
Je commande via un site Professionnel, qui me donne un tableau de ma commande lorsque celle ci est validée.

Sur ma première feuille, je colle donc ce tableau.
Sur ma seconde feuille, j'importe les données de ce tableau dans l'ordre voulue en ne prenant que les cellules qui m'interesse.
Ca ... j'y ARRIVe :)

Mon soucis maintenant est que je désire pouvoir différencier deux sortes de commande : les commandes de clients HG ( hors garantie ) et les clients SG ( sous garantie ).

Donc ce qu'il me faut, c'est pouvoir inclure dans mon code déjà existant, un systeme qui recherche dans la case NOM CLIENT, les cellules contenant HG et les importer dans la feuille suivi HG, et de meme pour les cellules contenant SG vers suivi SG

J'ai eu beau rechercher, je n'arrive pas à faire ca.
Voici mon code actuel :


Code:
Sub DonneeColler()

With ThisWorkbook  ' avec ce classeur excel
Set WSSource = Worksheets("Coller")   ' appeler la fiche coller wssource
Set WSCible = Worksheets("Suivi") ' appeler la fiche suivi  wscible
End With   ' fini le avec    ^^ hé hé j'traduis tout

For Each c In Range("L11:L500") 'pour chaque cellule de la colonne L attention pour des tests prevoir M20 comme limite !!!
   ligne = c.Row ' je repere le numero de la ligne
  If Cells(ligne, 12) = "A importer" Then 'si la 12eme colonne est A importer
   imp1 = Cells(ligne, 13) 'enregistrement en variables des renseignements qui serviront à remplir la fiche suivi
      nom = Cells(ligne, 10)   ' nom sera la cellule de la dixieme colonne
      ref1 = Cells(ligne, 2) ' etc
   ref2 = Cells(ligne, 3)
   desig = Cells(ligne, 4)
   qte = Cells(ligne, 5)
   


 If imp1 = "" Then  ' si la colonne 13 ne contient rien
   Cells(ligne, 13) = "Importation ok"  ' alors ecrire importation ok et commencer l'importation
       With WSCible ' avec la fiche suivi
       lig = WSCible.Columns(3).Find("", WSCible.Range("C1"), , , xlByRows).Row ' recherche la premiere ligne vide
       
     .Cells(lig, 2) = nom   ' et dans la colonne 2  coller la variable nom
           
     .Cells(lig, 3) = ref1  ' etc
    
  
     
     .Cells(lig, 4) = ref2
     
     .Cells(lig, 5) = desig
     
     .Cells(lig, 6) = qte
      
 .Cells(lig, 1) = Format((Now), "d-mmm-yyyy")  ' et mettre la date de l'importation
     
   
     
          
     End With
         
 End If

End If
  If Cells(ligne, 12) = "" Then Exit For 'arret de l'examen de la colonne L


Next
MsgBox "Plus de données à importer"

WSCible.Select



End Sub


Grand merci par avance !
 
Dernière édition:

Jeanbulle

XLDnaute Occasionnel
Re : Copier cellule vers une feuille ou une autre suivant critères...

re Bonjour
Désolé, j'avais oublié de poster un exemple.
Voici un petit fichier.
J'espère vraiment que vous pourrez m'aider.

Merci
 

Pièces jointes

  • Collercommande.zip
    16.6 KB · Affichages: 57

Pierrot93

XLDnaute Barbatruc
Re : Copier cellule vers une feuille ou une autre suivant critères...

Bonjour JeanBulle

tu peux essayer d'inclure et d'adapter dans ta macro la ligne de code ci-dessous

Code:
If Left(Range("J13").Value, 2) = "HG" Then
    Range("J13").Offset(0, 4).Value = "hors garantie"
    ElseIf Left(Range("J13").Value, 2) = "SG" Then Range("J13").Offset(0, 4).Value = _
        "sous garantie"
End If

Désolé suis pas chez moi, peux donc pas faire plus dans ta macro

Bon week end
@+
 

Omicron

XLDnaute Junior
Re : Copier cellule vers une feuille ou une autre suivant critères...

Bonjour JeanBulle,

Tu trouveras en pièce jointe un exemple qui devrait répondre au problème posé.

==========================================================

Private Sub CommandButton1_Click()

For Each RowSrc In ShtSrc.Range("11:500").Rows
If RowSrc.Cells(12) = "A importer" Then
Set ShtCib = Nothing
If InStr(RowSrc.Cells(10).Value, "HG") <> 0 Then _
Set ShtCib = Sheets("Suivi HG")
If InStr(RowSrc.Cells(10).Value, "SG") <> 0 Then _
Set ShtCib = Sheets("Suivi SG")
If Not ShtCib Is Nothing Then
i = ShtCib.UsedRange.Rows.Count + 1
ShtCib.Cells(i, 1).Value = Now
ShtCib.Cells(i, 2).Value = RowSrc.Cells(10).Value 'Nom
ShtCib.Cells(i, 3).Value = RowSrc.Cells(2).Value 'Référence 1
ShtCib.Cells(i, 4).Value = RowSrc.Cells(3).Value 'Référence 2
ShtCib.Cells(i, 5).Value = RowSrc.Cells(4).Value 'Désignation
ShtCib.Cells(i, 6).Value = RowSrc.Cells(5).Value 'Quantité
RowSrc.Cells(13).Value = "Importation OK"
End If
End If
Next RowSrc
MsgBox "Plus de données à importer"
ShtHG.Activate

End Sub
==========================================================

Bon courage pour la suite ....
 

Pièces jointes

  • Xld Copy feuille à feuille.xls
    41.5 KB · Affichages: 140

Jeanbulle

XLDnaute Occasionnel
Re : Copier cellule vers une feuille ou une autre suivant critères...

Bonsoir,

"Piouf" .... Voilà ce que mes cordes vocales ont émis comme son lorsque j'ai ouvert le fichier.
C'est précisement ce que je cherchais.

Je m'efforce de comprendre la totalité du code de manière à pouvoir le remanier à ma manière pour les autres feuilles puisque données confidentielles.


Je te remerci vraiment.
A toi aussi Pierrot, car ta solution aurais pu être inclus dans mon fichier.
Seulement, l'autre solution est beaucoup plus courte en codage.
reste à correctement la comprendre.

Je reposterais un message si vraiment je n'arrive pas à remanier.
Et je place le topic en résolu.

GRAND MERCI !
 

Jeanbulle

XLDnaute Occasionnel
Re : Copier cellule vers une feuille ou une autre suivant critères...

Re bonjour !
Vraiment, ta solution fonctionne à merveille et je suis en train de remanipuler le code pour d'autre feuille avec plus de cellule.
Pour l'instant tout va bien,
mais j'ai une question, qui va surement te sembler tres bete.

Je ne veux surtout pas que l'on puisse effacer les données d'un simple clic ( via ton bouton effacer suivi )
Mais, je ne sais pas l'enlever ... Pauvre de moi.

Pauvre novice que je suis, pour mettre une maccro par bouton, je fais " formulaire " , je dessine le bouton et affecter une maccro.
Je dois avoir BEAUCOUP à apprendre ...

Merci de l'information si tu peux me la communiquer.
Bonne fin de journée

Re bonsoir, c'est bon résolu, en utilisation la boites à outils, on peut éditer... Désolé...


Par contre, je n'arrive pas à attribuer le meme code pour d'autre feuille.
Pour résumé, j'ai rennomer les boutons de commande 1 et 2 en 3 et 4, et j'ai copier le code de la feuille COLLER, vers une autre feuille "COLLER autre marque", mais quand je cliques sur les boutons de commande de cette feuille, ca cherche les données A importer de la première feuille COLLER.
J'ai été assez clair ?
 
Dernière édition:

Jeanbulle

XLDnaute Occasionnel
Re : Copier cellule vers une feuille ou une autre suivant critères...

Re bonsoir !
Pour la question précédente, je n'ai toujours pas trouvé.

Seulement, pour information, afin que ce post soit complet, j'ai remanier DEUX choses sur ton code :
Le premier :
Code:
i = ShtCib.UsedRange.Rows.Count + 1
en
Code:
  i = ShtCib.Columns(3).Find("", ShtCib.Range("C10"), , , xlByRows).Row
Ce afin de garder la mise en page de mes cellules du tableau de suivi.
En tout cas, j'ai trouvé cette solution :)

Et également,
Code:
If RowSrc.Cells(12) = "A importer" Then
en
Code:
If RowSrc.Cells(12) = "A importer" And RowSrc.Cells(13) = ""

De manière à ne pas importer en double les cellulles déjà importée.

Voilà, je tenais à le préciser pour qu'une autre personne y trouve aussi son compte.

Bonne soirée
 

Omicron

XLDnaute Junior
Re : Copier cellule vers une feuille ou une autre suivant critères...

Bonsoir JeanBulle,

En réponse à tes questions :

1. Pour supprimer le bouton "Effacer Suivis" tu te mets en mode "Edition", en appuyant sur le bouton "Mode création" (la petite équerre) dans la barre d'outils "Boîte à Outils Contrôles", tu cliques sur le bouton "Effacer suivis", tu tapes sur la touche supression (le bouton disparaît), tu recliques sur le bouton "Mode création" pout te remettre en mode normal.

2. Pour pouvoir répliquer le code dans d'autres feuilles il faut changer :
For Each RowSrc In ShtSrc.Range("11:500").Rows
Par
For Each RowSrc In ActiveSheet.Range("11:500").Rows
je pense que celà devrait suffire

3. Je ne comprend pas du tout ce que tu cherches à faire en remplaçant
i = ShtCib.UsedRange.Rows.Count + 1
par
i = ShtCib.Columns(3).Find("", ShtCib.Range("C10"), , , xlByRows).Row
des explications seraient les bien venues

4. pour ce qui est du remplacement de
If RowSrc.Cells(12) = "A importer" Then
par
If RowSrc.Cells(12) = "A importer" And RowSrc.Cells(13) = ""
c'est très bien vu.

Toujours prêt à te donner un coup de main pour le point 3, mais il faudrait que j'en sache plus ....

Cordialement
 

Jeanbulle

XLDnaute Occasionnel
Re : Copier cellule vers une feuille ou une autre suivant critères...

Bonsoir mon divin sauveur !

Magnifique ! CA MARCHE
J'avais essayer de mettre With Worksheet("Coller")
...blabla end with

With Worksheet("Coller 1")
etc etc ... end with et un tas d'autres solutions.
Et je n'avais pas penser à mettre Activesheets ...
Mes neuronnes fatiguent ! ... TA Solution marche.
GRAND MERCI !


Pour le bouton de commande, j'avais entretemps trouvé. Mais merci de donner la solution détaillée.


Et Par rapport à ca :
Code:
3. Je ne comprend pas du tout ce que tu cherches à faire en remplaçant
i = ShtCib.UsedRange.Rows.Count + 1
par
i = ShtCib.Columns(3).Find("", ShtCib.Range("C10"), , , xlByRows).Row
des explications seraient les bien venues

Avec ton code, ca recherche la ligne utilisée, et ajoute 1 pour coller les données. ( si j'ai bien compris )
Seulement, étant donné que mes tableaux des autres pages sont pourvues de police, cadre, couleur... il me collait les données APRES le tableau ( puisque je ne connais pas la manière de mettre en forme un tableau autour des données collées )
Du coup, en remplacant ta ligne par la mienne, ca recherche la première case vide dans la colonne 3, et colle les données. Mais celle ci se colle DANS le tableau, et non après.
Alors, je ne suis pas un expert d'excel, j'ai recopié cette ligne de code d'un autre forum, mais ca marche et c'est l'essentiel.

Je te donne des nouvelles du fichier lorsqu'il sera terminé.
GRAND GRAND GRAND Merci, j'étais fatigué en ce moment, et ca m'as permis de retrouver le moral.
:)

Bonne semaine
 

Discussions similaires

Statistiques des forums

Discussions
312 194
Messages
2 086 064
Membres
103 110
dernier inscrit
Privé