VBA copier colonne sous condition d'autres colonnes Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
h
hakkiletah
Nouveau venu
Nouveau venu
Messages : 9
Inscrit le : 24 août 2017
Version d'Excel : 2010

Message par hakkiletah » 24 août 2017, 17:49

Bonjour,

Je suis nouvel inscrit et je viens vous demander votre aide car je commence vraiment à être désespéré.
Je cherche à faire un code VBA pour copier une colonne sous condition d'autres colonnes.

Je souhaite copier la colonne A de la feuille « Liste_UO » vers la colonne B de feuille « Juin » avec les contraintes suivantes :
- Ne pas supprimer les données de la feuille « Juin »
- La cellule doit contenir « *Excel* » ou « *Poten* »
- Si la valeur en colonne G de la feuille « Juin », égale à « N/A » ou « Facturée », ne pas copier
- Si la colonne i de la feuille « Liste_UO » à une date inférieur à la date de début de mois, ne pas copier
- Si valeur existe déjà dans la colonne B de feuille « Juin », ne pas copier et copier à la ligne d’en dessous

J'ai essayer plein de code qui fonctionnent mal ou très incomplets, donc je vous joint le fichier sans macro.

Merci de votre aide.
Imputation_V1.xlsm
(106.22 Kio) Téléchargé 32 fois
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 5'713
Appréciations reçues : 333
Inscrit le : 16 mars 2017
Version d'Excel : 2010

Message par i20100 » 26 août 2017, 00:54

Bonjour,

le problème avec les Tableau de ce genre c'est qu'on ne peut trouver la dernière ligne renseignée,
alors comment savoir ou coller la valeur ?

perso, je ne trouve pas utile cette option Tableau !

Édit:
j'ai écrit trop vite, j'ai finalement trouvé la dernière ligne à renseigner,
à tester,
Sub test()
Set sh1 = Sheets("Liste_UO")
Set sh2 = Sheets("Juin")
Set plg1 = sh1.Range("Tableau_Liste_UO[Code UO]")
Set plg2 = sh2.Range("Tableau_Juin[Nom]")
LastRw2 = sh2.Cells(Range(plg2.Address).Rows.Count, 1).End(xlUp).Row + 1

For Each c In plg1
 If IsError(Application.Match(c, plg2, 0)) Then
  If sh1.Cells(c.Row, "I") >= DateSerial(Year(Date), Month(Date), 1) Then
   If c Like "*Excel*" Or c Like "*Potent*" Then
    sh2.Cells(LastRw2, 1) = c.Value
    LastRw2 = sh2.Cells(Range(plg2.Address).Rows.Count, 1).End(xlUp).Row + 1
   End If
  End If
 End If
Next
End Sub
Vive ces nouvelles saisons qui nous colorent.
isabelle
h
hakkiletah
Nouveau venu
Nouveau venu
Messages : 9
Inscrit le : 24 août 2017
Version d'Excel : 2010

Message par hakkiletah » 28 août 2017, 09:26

Bonjour et merci SabV pour ton retour.

Je suis désolé mais le code fait complètement bugguer Excel qui, je pense bloque sur une boucle.
Je continu d'investiguer et joins le fichier pour info.
Imputation_V1.1.xlsm
(171.23 Kio) Téléchargé 12 fois
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 5'713
Appréciations reçues : 333
Inscrit le : 16 mars 2017
Version d'Excel : 2010

Message par i20100 » 29 août 2017, 17:24

Bonjour hakkiletah,
« Liste_UO » à une date inférieur à la date de début de mois, ne pas copier
toutes les dates sont inférieur à la date de début de mois, donc il n'y a rien à copier
Vive ces nouvelles saisons qui nous colorent.
isabelle
h
hakkiletah
Nouveau venu
Nouveau venu
Messages : 9
Inscrit le : 24 août 2017
Version d'Excel : 2010

Message par hakkiletah » 29 août 2017, 18:21

Excuse moi, je me suis mal exprimé.
Je parlais pas de la date de début du mois en cours, mais de début juin (01/06/2017).
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 5'713
Appréciations reçues : 333
Inscrit le : 16 mars 2017
Version d'Excel : 2010

Message par i20100 » 29 août 2017, 20:05

Si la valeur en colonne G de la feuille « Juin », égale à « N/A » ou « Facturée », ne pas copier
il n'y a rien en colonne G de la feuille « Juin » et d'ailleurs rien sur les autre colonnes non plus
Vive ces nouvelles saisons qui nous colorent.
isabelle
h
hakkiletah
Nouveau venu
Nouveau venu
Messages : 9
Inscrit le : 24 août 2017
Version d'Excel : 2010

Message par hakkiletah » 30 août 2017, 16:08

Effectivement c'est d'après la colonne G de la feuille "Liste_UO".
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 5'713
Appréciations reçues : 333
Inscrit le : 16 mars 2017
Version d'Excel : 2010

Message par i20100 » 30 août 2017, 19:40

Bonjour,

à tester,
Sub test()
Set sh1 = Sheets("Liste_UO")
Set sh2 = Sheets("Juin")
Set plg1 = sh1.Range("Tableau_Liste_UO[Code UO]")
Set plg2 = sh2.Range("Tableau_Juin[Nom]")
LastRw2 = sh2.Cells(Range(plg2.Address).Rows.Count, 1).End(xlUp).Row + 1

For Each c In plg1
x = c.Row
Z = plg1.Address
 If IsError(Application.Match(c, plg2, 0)) Then
  Err.Clear
  If sh1.Cells(c.Row, "F") > DateSerial(Year(Date), 6, 1) Then
   If c Like "*Excel*" Or c Like "*Potent*" Then
     If sh1.Cells(c.Row, "G") = "Facturée" Or sh1.Cells(c.Row, "G") = "N/A" Then
      sh2.Cells(LastRw2, 1) = c.Value
      sh2.Cells(LastRw2, "I") = sh1.Cells(c.Row, "F")
      LastRw2 = sh2.Cells(Range(plg2.Address).Rows.Count, 1).End(xlUp).Row + 1
     End If
   End If
  End If
 End If
Next
End Sub
Vive ces nouvelles saisons qui nous colorent.
isabelle
h
hakkiletah
Nouveau venu
Nouveau venu
Messages : 9
Inscrit le : 24 août 2017
Version d'Excel : 2010

Message par hakkiletah » 31 août 2017, 13:54

Salut SabV,

Merci beaucoup ton code m'a bien aidé (je l'ai juste retouché pour inscrire les valeurs que je souhaitais).

Cependant, si je peux encore abuser, je n'arrive pas à changer la destination de la copie de la feuille "Juin" du champs 'Nom' à 'Code UO'.
J'ai essayé de modifier le code sans succès.

Je te joins le fichier excel avec la macro.
Imputation_V2.xlsm
(178.1 Kio) Téléchargé 32 fois
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 5'713
Appréciations reçues : 333
Inscrit le : 16 mars 2017
Version d'Excel : 2010

Message par i20100 » 31 août 2017, 14:17

Bonjour,

pour copier le champ Code JIRA de la feuille "Liste_UO"
sur la colonne Code UO de la feuille "Juin"

remplacer:
sh2.Cells(LastRw2, 1) = c.Value
par:
sh2.Cells(LastRw2, 2) = c.Value
Vive ces nouvelles saisons qui nous colorent.
isabelle
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message