Comment se servir d'une valeur texte comme référence de ligne

Résolu/Fermé
HCRET Messages postés 6 Date d'inscription dimanche 11 mai 2014 Statut Membre Dernière intervention 3 juin 2014 - 30 mai 2014 à 15:07
HCRET Messages postés 6 Date d'inscription dimanche 11 mai 2014 Statut Membre Dernière intervention 3 juin 2014 - 3 juin 2014 à 19:00
Bonjour,

Je bloque depuis quelques heures et impossible de trouver une solution, je bloque...

Dans excel j'ai des fiches (une fiche par feuille) avec un tableau évolutif:

Sur les lignes 13, 21 et 29 j'ai des références textes en B13 ("Studio A"), B21 ("Studio B") et B29 ("Studio C") . Je cherche à insérer des lignes issues d'une autre feuille entre la ligne 13 et la ligne 21, et entre les lignes 21 et 29, sachant que le nombre de lignes insérées peuvent changer du jour au lendemain. La ligne 21 peut devenir la ligne 117, et la ligne 29 peut devenir la ligne 223 (par exemples).

J'ai essayé avec des valeures relatives de cellules mais ce n'est pas ce que je recherche, j'ai essayé avec de bêtes copier/coller mais c'est pas top.

Je cherche donc à me référencer aux valeurs texte "Studio A", "Studio B", "Studio C" pour insérer mes lignes.

Si vous avez une piste...

A voir également:

2 réponses

HCRET Messages postés 6 Date d'inscription dimanche 11 mai 2014 Statut Membre Dernière intervention 3 juin 2014
Modifié par HCRET le 30/05/2014 à 17:40
Hello,

Je vous mets le code que j'ai écrit:


Sub CollageEtDecalage()
Dim FeuilleCourante As String
Dim ia As Long


FeuilleCourante = ActiveSheet.Name

Sheets("Donnees").Select
Range(Range("A1:C1"), Range("A65000:C65000").End(xlUp)).Select 'selection des trois colonnes
Selection.Copy
Sheets(FeuilleCourante).Select ' ok1

With ActiveSheet
If .Range("B" & ia).Value = "Studio A" Then
.Rows(i + 3).Select
Selection.Insert Shift:=xlDown

End If
End With


End Sub

Mais j'ai une erreur 1004 sur: If .Range("B" & ia).Value = "Studio A" Then

où "Donnees" est ma feuille source où les éléments sont copiés (les colones A à C), et "FeuilleCourante" est la feuille courante où je travaille (j'ai pléthore de feuilles, donc j'ai préféré travailler sur une macro générique).
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
31 mai 2014 à 07:53
Nonjour,

Normal, d'après ton code,tu n'as pas donné de valeurs aux variables "ia" et "i"
il vaut mieux toujours inscrire "option explicit" avant la macro
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
31 mai 2014 à 11:13
PourTrouver la position des valeurs text


Dim Lig_A As Long, lig_B As Long, Lig_C As Long
'.............
With Sheets(FeuilleCourante)
Lig_A = .Columns("A").Find("Studio A", .Range("A1"), xlValues).Row
lig_B = .Columns("A").Find("Studio B", .Range("A1"), xlValues).Row
Lig_C = .Columns("A").Find("Studio C", .Range("A1"), xlValues).Row
'suite du code..........
End With
0
HCRET Messages postés 6 Date d'inscription dimanche 11 mai 2014 Statut Membre Dernière intervention 3 juin 2014
3 juin 2014 à 16:42
Hello michel_m,

Merci d'avoir pris du temps pour me répondre.
Je mets maintenant "option explicit" devant toutes mes maccros et ça m'aide bien !

Cependant j'ai une erreur dans le débugage sur:

WiLig_A = .Columns("A").Find("Studio A", .Range("A1"), xlValues).Row

Il me met:
"erreur d'execution 13" Incompatibilité de type

pourtant Lig_A est bien un nombre... J'ai essayé avec Variant, mais ça ne marche pas mieux...
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
3 juin 2014 à 17:16
d'après tes écrits il s'agirait plutôt de la colonne B plutôt que A
.Columns("B").Find("Studio A", .Range("B1"), xlValues).Row

je viens d'essayer c'est OK
0
HCRET Messages postés 6 Date d'inscription dimanche 11 mai 2014 Statut Membre Dernière intervention 3 juin 2014
3 juin 2014 à 19:00
merci !
0