[Déplacé VBA]Insertion lignes sous condition [Résolu]

Messages postés
6
Date d'inscription
mercredi 4 janvier 2012
Dernière intervention
5 janvier 2012
- - Dernière réponse : HRgeneva
Messages postés
6
Date d'inscription
mercredi 4 janvier 2012
Dernière intervention
5 janvier 2012
- 5 janv. 2012 à 16:07
Bonjour,

Je suis débutant en VBA, ma question va donc surement vous paraître très simple mais je tourne en rond et j'ai besoin d'une réponse.

J'ai dans ma colonne A des numero de dossier avec à leur droite une série d'infos sur ces dossiers. Ces numéro de dossier sont espacé de façon non régulière en fonction de la quantité d'info. Je souhaiterai avoir un nombre de lignes égales entre chaque numéro de dossier, par exemple:

F12034 rouge
- carré
- lourd
-
F12035 bleu
- rond
-
F12036 vert
- triangle
- léger
- froid
-
F12037
.
.

Et avoir à la place:

F12034 rouge
- carré
- lourd
-
-
F12035 bleu
- rond
-
-
-
F12036 vert
- triangle
- léger
- froid
-
F12037
.
.
.

Je ne sais pas si j'ai été clair?

D'avance merci pour votre aide!
HR
Afficher la suite 

Votre réponse

13 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
3
Merci
Bon ...

Après un bon repas et un bon vin et relecture de mon code , on peut faire mieux et moins cher (se passer de la booléenne deja et éviter une redondance) ===>>

Dim nblignes As Integer, arrivee As Long, i As Long, j As Integer
  nblignes = 10 ' <<<<<<<====== c'est ici, que tu dois définir le nombre de lignes d'écart que tu veux
  With Worksheets("Feuil1") ' <<<<<<==== remplace "Feuil1" par le nom de TA feuille à toi
    For i = .Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1
     If .Range("A" & i).Text Like "F#### ##" Then
       If arrivee <> 0 Then
         For j = 1 To nblignes + 1 - (arrivee - i)
           .Range("A" & arrivee).Insert Shift:=xlShiftDown
         Next
       End If
       arrivee = i
     End If
    Next
  End With


Voilà

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 96 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Bonjour,
Avant toute autre chose :
Tu développes sous VBA et non sous VB6. Pense dorénavant à poster dans la section adéquate (langes dérivés > VBA)
Tes "numeros de dossier" ont-ils TOUJOURS le même aspect (la lettre F suivie de 5 chiffres, d'un espace, puis d'une couleur) ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Dernière intervention
30 octobre 2013
0
Merci
Tien prends le code de "ucfoutu". Dans l'état actuelle il liste toutes les valeurs de la colonne A toi tu n'as que à changer le IF.

note Left(Feuil1.Range("A1").Value, 2) récupère les deux premiers caractère de la cellule.

Do While Not (IsEmpty(ActiveCell))
  If Left(Feuil1.Range("A1").Value, 2) 11 And Right(Feuil1.Range("A1").Value, 1) a Then
    nb = nb + 1
  End If
  Selection.Offset.cell(1, 0).Select
Loop 
Commenter la réponse de 4u4me4us
Messages postés
6
Date d'inscription
mercredi 4 janvier 2012
Dernière intervention
5 janvier 2012
0
Merci
Ok je ferai attention pour le sujet la prochaine fois ;)

Oui c'est à chaque fois sous forme de F#### ##
Par contre les infos sont des répartitions séctorielles, monétaires ou géographiques, il peut y avoir de 2 à 30 lignes de détails, par exemple, à côté de A1, on peut avoir de info de B1 à I3 puis à côté de A5 des infos de B5 à I29 etc...

Merci ;)
Commenter la réponse de HRgeneva
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
déjà :
F#### ## signifie F suivi de 4 chiffres, d'un espace, puis de 2 chiffres (et donc très différent der ton 1er message) !
Qu'en est-il donc EXACTEMENT ?
Par contre les infos sont des répartitions séctorielles, monétaires ou géographiques, il peut y avoir de 2 à 30 lignes de détails, par exemple, à côté de A1, on peut avoir de info de B1 à I3 puis à côté de A5 des infos de B5 à I29 etc...

Très différent de ton 1er message également (où il était question d'avoir toujours 4 lignes entre les "dossiers".
Peux-tu exposer très clairement et avec précision ce que tu veux EXACTEMENT ?

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
6
Date d'inscription
mercredi 4 janvier 2012
Dernière intervention
5 janvier 2012
0
Merci
Ok navré, je ne pensais pas que le type d'info était vraiment important.

Donc oui c'est toujours "F" suivit de 4 chiffres, un espace puis 2 chiffres sous forme F#### ##

En fait je vais simplifier ma demande:

Dans la colonne A, il y a ces numéros de dossiers espacés de façon irrégulière (par exemple en A1-A4-A9-A17-A22) et je voudrais insérer de façon automatique des lignes entres ces numéros de dossier pour avoir un espacement régulier (px A1-A10-A20-A30 etc...)

Merci!
Commenter la réponse de HRgeneva
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Bon...

Cela va me demander de faire un petit travail préalable assez méticuleux, pour ne pas risquer d' "ajouter des ajouts aux ajouts".
Je te ferai ça ce soir, après dîner.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Bon...
J'avais un petit "trou" dont je te fais profiter :

Dim nblignes As Integer, arrivee As Long, i As Long, j As Integer, deja As Boolean
  nblignes = 10 ' <<<<<<<====== c'est ici, que tu dois définir le nombre de lignes d'écart que tu veux
  With Worksheets("Feuil1") ' <<<<<<==== remplace "Feuil1" par le nom de TA feuille à toi
    For i = .Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1
     If .Range("A" & i).Text Like "F#### ##" Then
       If deja Then
         For j = 1 To nblignes + 1 - (arrivee - i)
           .Range("A" & arrivee).Insert Shift:=xlShiftDown
         Next
         arrivee = i
       Else
         arrivee = i
         deja = True
       End If
     End If
    Next
  End With


Valable, donc, si tes dossiers sont en colonne A et de la forme "F#### ##", hein !
De cette manière, même en lançant plusieurs fois par mégarde, tu auras toujours 10 lignes de "séparation"


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Tiens !
Plus là !
Je suis donc le seul, de nous deux, à me "fouler un peu la rate" ?

Bonne chance ...


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
6
Date d'inscription
mercredi 4 janvier 2012
Dernière intervention
5 janvier 2012
0
Merci
Merci beaucoup ucfoutu! Je n'avais pas eu le temps de voir cela avant mais je vais tester tout ça aujourdhui!

Merci pour ton temps
Commenter la réponse de HRgeneva
Messages postés
6
Date d'inscription
mercredi 4 janvier 2012
Dernière intervention
5 janvier 2012
0
Merci
Le code fonctionne mais j'aurai une dernière demande: il faudrait que j'insère une ligne allant de la colonne A à K et pas seulement en A... Est-ce possible? Après je pourrai essayer de comprendre tranquilement le code.

Merci beaucoup!
Commenter la réponse de HRgeneva
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Bonjour,
1) un problème par discussion, s'il te plait. C'est la règle sur ce forum.
Si celui-ci est résolu : ===>> Tag "réponse acceptée"
2) dans ta nouvelle discussion/nouveau problème :
j'aurai une dernière demande: il faudrait que j'insère une ligne allant de la colonne A à K et pas seulement en A

n'est pas vraiment clair et est à préciser correctement?.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
6
Date d'inscription
mercredi 4 janvier 2012
Dernière intervention
5 janvier 2012
0
Merci
Ok je vais faire une nouvelle demande, merci pour ton aide!
Commenter la réponse de HRgeneva

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.