Suite d'une macro
elio55
Messages postés
20
Date d'inscription
Statut
Membre
Dernière intervention
-
f894009 Messages postés 17417 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17417 Date d'inscription Statut Membre Dernière intervention -
Bonjour :)
Dans mon fichier il y a dans une colonne A des dates et dans une colonne B les information correspondantes
Alors je vous explique mon problème, j'ai une macro qui selon l'année de la date que je saisi me retrouve dans ma colonne A (de ma feuille 1) toutes les dates concerner par cette année et me colorie les cellules en rouge
en plus de sa elle prend les dates concerner et me les met a part dans une feuille 2
le problème c'est quelle ne prend et n'isole que la colonne A et non la colonne B qui correspond aux informations
merci de votre aide !
voici le code de la macro
Dans mon fichier il y a dans une colonne A des dates et dans une colonne B les information correspondantes
Alors je vous explique mon problème, j'ai une macro qui selon l'année de la date que je saisi me retrouve dans ma colonne A (de ma feuille 1) toutes les dates concerner par cette année et me colorie les cellules en rouge
en plus de sa elle prend les dates concerner et me les met a part dans une feuille 2
le problème c'est quelle ne prend et n'isole que la colonne A et non la colonne B qui correspond aux informations
merci de votre aide !
voici le code de la macro
Sub date_4()
Dim X As Variant
Dim Cel As Range
X = Application.InputBox("Année de la date", "ANNÉE", Type:=1)
If X = False Then Exit Sub
Worksheets("feuil2").Cells.ClearContents 'efface cellules feuille
Set Cel = Sheets("Feuil1").UsedRange.Find(X, lookat:=xlPart)
If Not Cel Is Nothing Then
PA = Cel.Address
lig = 1 'ligne de depart pour feuil2
Do
Cel.Interior.ColorIndex = 3
Worksheets("feuil2").Cells(lig, 1) = Cel.Value 'ecriture
lig = lig + 1 '+1 pour donnee suivante
Set Cel = Sheets("Feuil1").UsedRange.FindNext(Cel)
Loop While Not Cel Is Nothing And Cel.Address <> PA
End If
End Sub
3 réponses
-
Bonjour,
le problème c'est quelle ne prend et n'isole que la colonne A et non la colonne B
Tu veux donc parler de cette ligne de code ... qui ne prend QUE la valeur de la cellule "trouvée" par ton find.Worksheets("feuil2").Cells(lig, 1) = Cel.Value
Il suffirait d'ajouter une seconde ligne de code pour lui dire de prendre également la cellule d' à côté...
Plusieurs façons de faire ... par exemple :Worksheets("feuil2").Cells(lig, 2) =Sheets("Feuil1").cells(Cel.Row,2).Value
Cordialement,
Jordane-
-
-
Bonjour,
deux facons de faire, suivant "ma" programmation:
With Worksheets("feuil2") .Cells(lig, 1) = Cel.Value 'ecriture colonne A .Cells(lig, 2) = Cel.Offset(0, 1).Value 'ecriture colonne B .Cells(lig, 3) = Cel.Offset(0, 2).Value 'ecriture colonne C End With
'ou suivant programmation jordane45Worksheets("feuil2").Cells(lig, 1) = Sheets("Feuil1").Cells(Cel.Row, 1).Value Worksheets("feuil2").Cells(lig, 2) = Sheets("Feuil1").Cells(Cel.Row, 2).Value Worksheets("feuil2").Cells(lig, 3) = Sheets("Feuil1").Cells(Cel.Row, 3).Value -
-
-
-
Re,
c'est que si on rajoute 10 colonnes
sur le meme code:Sub date_4() Dim X As Variant Dim Cel As Range X = Application.InputBox("Année de la date", "ANNÉE", Type:=1) If X = False Then Exit Sub Worksheets("feuil2").Cells.ClearContents 'efface cellules feuille Set Cel = Sheets("Feuil1").UsedRange.Find(CDate(X), lookat:=xlPart) If Not Cel Is Nothing Then PA = Cel.Address lig = 1 'ligne de depart pour feuil2 Do With Worksheets("feuil2") For c = 0 To 9 'changez le 9 (de 1 a 10) par le nombre de colonnes que vous voulez .Cells(lig, 1 + c) = Cel.Offset(0, c) 'ecriture colonne numero "c" (1 puis 2 puis 3 .. 10 ) Next c lig = lig + 1 '+1 pour donnee suivante End With Set Cel = Sheets("Feuil1").UsedRange.FindNext(Cel) Loop While Not Cel Is Nothing And Cel.Address <> PA End If End Sub
Il y a d'autre facons, mais c'est a vous de voir .......... -
merci pour votre réponse ! oui c'est ce principe
mais le problème c'est que si on rajoute 10 colonnes et que je veux qu'il me les prennent tous , je devrais rajouter une ligne dans mon code a chaque fois
il serait plus judicieux de prendre toute la ligne concerner par la date nan ?
comment puis-je faire sa ?