Oldevi
Messages postés10Date d'inscriptionmardi 2 décembre 2008StatutMembreDernière intervention28 janvier 2009
-
2 déc. 2008 à 17:32
Oldevi
Messages postés10Date d'inscriptionmardi 2 décembre 2008StatutMembreDernière intervention28 janvier 2009
-
2 déc. 2008 à 22:53
Bonjour a tous,
J'ai un fichier excel avec 2 onglets,
-pour toute valeur = VALEUR dans la colonne C de la feuille 1, je souhaite inserer une ligne determine au dessus de cette valeur qu'Excel irait chercher dans la feuille 2. J'ai tente ca sans succes :
Sub test()
Dim MyCell As Range
For Each MyCell In Range("C1:C100")
If MyCell = "VALEUR" Then sheets("sheet2").rows("2:2").Insert Shift:=xlDown
whitelegend
Messages postés156Date d'inscriptionvendredi 13 janvier 2006StatutMembreDernière intervention 2 mars 2009 2 déc. 2008 à 21:27
Oldevi,
Cadeau.... désolé pour les vrai progrommeur qui s'arracheront les cheveux en voyant ce style de progroammation de noob bouseux mais j'ai fait ca très rapidement et je suis loin d'être un pro
En tous cas ca a le mérite de fonctionner
Attention les valeur que tu veux insérer sont considérées comme stockées dans la colonne "C" de la feuille2 et les unes sous les autres. On viens chercher la suivante au coup d'après quand on en prends une.
A toi d'adapter si ce n'est pas le cas avec ton fichier mais tu donnes trop peu d'infos ...
Sub test()
Dim MyCell As Range, Insert As String, Incr As Boolean
'Initialise les variables
i = 1
Incr = False
For Each MyCell In Range("C1:C100")
If Not Incr Then 'Si True saute la routine pour incrémenter mycell de +1
If MyCell = "VALEUR" Then
Incr = True 'Au prochain passage de For il ne faut pas faire la routine If
Sheets("Feuil2").Activate
Insert = Range("C" & i).Value 'Mémorise la valeur à insérer
If Range("C" & i + 1).Value <> "" Then i = i + 1
Sheets("Feuil1").Activate
Rows(MyCell.Row).Insert Shift:=xlDown
Range("C" & MyCell.Row - 1).Value = Insert 'Colle la valeur à insérer
End If
Else
Incr = False 'Mycell incrémenter de +1 donc on repasse à False pour faire la routine If
End If
Next MyCell
End Sub
LC
Noto: je ne sais pas comment sortira mon post mais tout est en italique pour moi ne l'écrivant ... bizarre tous ca ...
whitelegend
Messages postés156Date d'inscriptionvendredi 13 janvier 2006StatutMembreDernière intervention 2 mars 2009 2 déc. 2008 à 18:10
Oldevi,
J'ai testé et ca marche comme ci-dessous ;)
Sub test()
Dim MyCell As Range
For Each MyCell In Range("C1:C100")
If MyCell = "VALEUR" Then
Rows(MyCell.Row).Insert Shift:=xlDown
'
'si tu veux insérer cette ligne sur une autre feuille...
'Sheets("Ta feuille").Rows(MyCell.Row).Insert Shift:=xlDown
'
Exit For
End If
Next MyCell
Oldevi
Messages postés10Date d'inscriptionmardi 2 décembre 2008StatutMembreDernière intervention28 janvier 2009 2 déc. 2008 à 19:55
Bonjour White Legend,
Merci bcp pour ta reponse, ca m'aide vraiment. Cependant, je rencontre encore quelques pbs.
En effet, je veux inserer une ligne particuliere avec des donnees (qui se trouve en feuille 2) et non une ligne vierge.
-> Sheets(sheet2).Rows("1:1")
D'autre part l'insertion ne se produit que pour la premiere occurence de "valeur". J'ai pense que le exit for pouvait en etre la cause. Mais en le supprimant la macro ajoute indefiniment des lignes au dessus de celle contenant la valeur. Je pense donc qu'il faut indiquer a excel de decaler MyCell d'une cellule vers le bas.
Voila j'espere ne pas avoir ete trop confus. Dsl pour les accents je suis sur clavier US.