Recopie cellule sous condition
MART
-
lermite222 Messages postés 9042 Statut Contributeur -
lermite222 Messages postés 9042 Statut Contributeur -
Bonjour,
je debute sur Exel VBA merci d'être indulgnet ;-)
Mon problème est le suivant: j'ai un fichier qui comporte une collonne B .
Cette colonne B comporte des cellule qui ont :
-soit une date
-soit un chiffre
Je voudrais avec une macros recopier dans la colonne A uniquement les cellules de la colonne B qui contienne une date. ce qui donnerait ceci:
colonne A Colonne B
01/02/2009 01/02/2009
01/02/2009 2
01/02/2009 5
01/02/2009 3
01/03/2009 01/03/2009
01/03/2009 2
01/03/2009 5
01/03/2009 7
01/03/2009 3
01/03/2009 0
06/05/2008 06/05/2006
La date doit etre recopier sur les lignes qui suivent jusqu'a ce que l'on rencontre dans la colonne B une autre date qui elle même doit etre recopier sur les lignes suivante et ansi de suite jusqu'a la fin du fichier.
Pourriez-vous m'aider SVP:-(
je debute sur Exel VBA merci d'être indulgnet ;-)
Mon problème est le suivant: j'ai un fichier qui comporte une collonne B .
Cette colonne B comporte des cellule qui ont :
-soit une date
-soit un chiffre
Je voudrais avec une macros recopier dans la colonne A uniquement les cellules de la colonne B qui contienne une date. ce qui donnerait ceci:
colonne A Colonne B
01/02/2009 01/02/2009
01/02/2009 2
01/02/2009 5
01/02/2009 3
01/03/2009 01/03/2009
01/03/2009 2
01/03/2009 5
01/03/2009 7
01/03/2009 3
01/03/2009 0
06/05/2008 06/05/2006
La date doit etre recopier sur les lignes qui suivent jusqu'a ce que l'on rencontre dans la colonne B une autre date qui elle même doit etre recopier sur les lignes suivante et ansi de suite jusqu'a la fin du fichier.
Pourriez-vous m'aider SVP:-(
A voir également:
- Recopie cellule sous condition
- Excel cellule couleur si condition texte - Guide
- Proteger cellule excel - Guide
- Aller à la ligne dans une cellule excel - Guide
- Diviser une cellule excel en deux horizontalement ✓ - Forum Excel
- Excel cellule choix multiple - Guide
5 réponses
Bonjour,
Tu copie le code ci-dessous dans le module de ta feuille
Soit tu met un bouton qui appel la macros soit tu met le cureseur au milieu de la macros et tu tape F5
A+
Tu copie le code ci-dessous dans le module de ta feuille
Sub Recopie()
Dim LigA As Long, LigB As Long
LigA = Range("A65536").End(xlUp).Row + 1
For LigB = 1 To Range("B65536").End(xlUp).Row
If IsDate(Cells(LigB, 2)) Then
Cells(LigA, 1) = CDate(Cells(LigB, 2))
LigA = LigA + 1
End If
Next LigB
End Sub
Soit tu met un bouton qui appel la macros soit tu met le cureseur au milieu de la macros et tu tape F5
A+
Autre solution
tu remplace la ligne
par
tu remplace la ligne
'If IsDate(Cells(LigB, 2)) Then
par
If Len(Cells(LigB, 2)) > 7 Then
En fait avec ton code j'obtiens bien une copie des données mais toutes les dates sont regroupéees au lieu de se repeter sur les lignes suivantes.
Je suis bien en format standard sur mes deux colonnes.
J'obtiens la même choses avec la nouvelle ligne de code:
If Len(Cells(LigB, 2)) > 7 Then
colonne A: Colonne B:
01/03/2007 01/03/2007
01/03/2007 2
01/03/2007 5
01/03/2007 4
01/03/2007 8
01/03/2007 1
01/03/2007 5
01/02/2008 01/02/2008
01/02/2008 2
01/02/2008 5
01/02/2008 7
01/02/2008 2
01/02/2008 0
Merci
Je suis bien en format standard sur mes deux colonnes.
J'obtiens la même choses avec la nouvelle ligne de code:
If Len(Cells(LigB, 2)) > 7 Then
colonne A: Colonne B:
01/03/2007 01/03/2007
01/03/2007 2
01/03/2007 5
01/03/2007 4
01/03/2007 8
01/03/2007 1
01/03/2007 5
01/02/2008 01/02/2008
01/02/2008 2
01/02/2008 5
01/02/2008 7
01/02/2008 2
01/02/2008 0
Merci
Pas normal, quand je teste, que ce soit avec la 1ère solution ou avec la deuxième ça fonctionne !!
Tu peu pas mettre ton classeur sur Cjoint.com ? et mettre le lien dans un poste suivant.
Mais tu à peut-être un tri automatique sur ta feuille ?
A+
Tu peu pas mettre ton classeur sur Cjoint.com ? et mettre le lien dans un poste suivant.
Mais tu à peut-être un tri automatique sur ta feuille ?
A+
https://www.cjoint.com/?bErwlL2SRO
Je t'envoie le lien créee sur CJoint.com
il y a mon vrai fichier et lorque j'execute ta macro ca me repete une serie d'heure au format americain et les dates n'apparaissent pas.
Merci d'avance de ton aide.
Mart
Je t'envoie le lien créee sur CJoint.com
il y a mon vrai fichier et lorque j'execute ta macro ca me repete une serie d'heure au format americain et les dates n'apparaissent pas.
Merci d'avance de ton aide.
Mart
Re,
tu peu tester...
Reprend les 2 lignes que tu renseigne plus haut.
A+
tu peu tester...
Sub Recopie()
Dim LigA As Long, LigB As Long
LigA = Range("A65536").End(xlUp).Row + 1
For LigB = 1 To Range("B65536").End(xlUp).Row
If IsDate(Cells(LigB, 2)) Then
If Year(Cells(LigB, 2)) > 1900 Then
Cells(LigA, 1) = CDate(Cells(LigB, 2))
LigA = LigA + 1
End If
End If
Next LigB
End Sub
Reprend les 2 lignes que tu renseigne plus haut.
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Si tu veux garder le format spécial de tes dates... [] mm/dd/yyyy
A+
Sub RecopieAvecFormat()
Dim LigA As Long, LigB As Long
LigA = Range("A65536").End(xlUp).Row + 1
For LigB = 1 To Range("B65536").End(xlUp).Row
If IsDate(Cells(LigB, 2)) Then
If Year(Cells(LigB, 2)) > 1900 Then
' Cells(LigA, 1) = CDate(Cells(LigB, 2))
Cells(LigB, 2).Copy Cells(LigA, 1)
LigA = LigA + 1
End If
End If
Next LigB
End Sub
A+
01/02/2009
01/02/2009 2
06/03/2009 3
01/05/2008 0
1
4
06/03/2009
1
2
0
01/05/2008
Il faudrait que la date se repete jusqua ce que l'on rencontre une nouvelle date qui se repete a nouveau il ne doit pas y avoir de ligne vide:
01/02/2009 01/02/2009
01/02/2009 2
01/02/2009 3
01/02/2009 0
01/02/2009 1
01/02/2009 4
06/03/2009 06/03/2009
06/03/2009 1
06/03/2009 2
06/03/2009 0
01/05/2008 01/05/2008
Merci et bonne année.
il ne faut pas, laisserla colonne en format standard, chaque fois que tu entre une date, le format se modifie automatiquement et la macros fonctionne comme demander. J'ai tester avant de te la passer.
A+