Nommer une plage à partir de Find (je crois)...

Résolu
edouard_berth Messages postés 17 Date d'inscription lundi 4 juillet 2005 Statut Membre Dernière intervention 8 août 2005 - 7 juil. 2005 à 19:08
edouard_berth Messages postés 17 Date d'inscription lundi 4 juillet 2005 Statut Membre Dernière intervention 8 août 2005 - 8 juil. 2005 à 14:33
Bonjour,
Je débute en vba, et je voulais savoir comment créer une plage intitulée "x" regroupant toutes les cellules de col.A dont la valeur est "auteur".
Une fois cette plage nommée, j'aimerais pouvoir sélectionner toutes les cellules comprises entre la première et la seconde cellule de cette plage.
J'y ai passé la journée et commence à désespérer...
Merci

6 réponses

edouard_berth Messages postés 17 Date d'inscription lundi 4 juillet 2005 Statut Membre Dernière intervention 8 août 2005
8 juil. 2005 à 14:33
Merci beaucoup,

Tout marche à merveille !
3
cs_wape Messages postés 262 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 19 décembre 2010 12
7 juil. 2005 à 23:58
Bonsoir,

Essaye qqch du genre :

Dim MaTable() As String


Dim MaPlage As Range
Dim Cellule As Range


'Parcourir les cellules de la colonne A
For Each Cellule In ActiveSheet.Range("A1:A" & ActiveSheet.Range("A65536").End(xlUp).Row)
If Cellule.Value = "auteur" Then
If MaPlage Is Nothing Then
Set MaPlage = Cellule
Else
Set MaPlage = Union(MaPlage, Cellule)
End If
End If
Next


'Créer la plage nommée
ActiveSheet.Names.Add "X", MaPlage


'Récupérer les adresses des cellules de la plage
MaTable = Split(MaPlage.Address, ",")


'Sélectionner la plage comprise entre la 1ère et la 2ème cellule
ActiveSheet.Range(MaTable(0) & ":" & MaTable(1)).Select

wape
0
edouard_berth Messages postés 17 Date d'inscription lundi 4 juillet 2005 Statut Membre Dernière intervention 8 août 2005
8 juil. 2005 à 10:07
Merci pour cette réponse, mais je ne parviens pas à faire fonctionner le code dont l'exécution s'arrète au moment de nommer la plage...
Je cherche une explication mais si tu as une idée, n'hésite pas...
Merci encore
0
cs_wape Messages postés 262 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 19 décembre 2010 12
8 juil. 2005 à 10:33
Bonjour,

S'agit-il du message ?

Erreur d'exécution 1004:
Erreur définie par l'application ou par l'objet

Si oui, cela signifie qu'aucune cellule de la colonne A ne contient le mot "auteur". Dans ce cas, essaye de modifier le code comme suit :

'Créer la plage nommée
If MaPlage Is Nothing Then
MsgBox "Aucune cellule ne contient le mot 'auteur' !", vbCritical
Exit Sub
Else
ActiveSheet.Names.Add "X", MaPlage
End If

wape
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
edouard_berth Messages postés 17 Date d'inscription lundi 4 juillet 2005 Statut Membre Dernière intervention 8 août 2005
8 juil. 2005 à 11:13
Merci, infiniment. C'était effectivement le problème. En fait auteur était écrit avec une majuscule dans la colonne A.
Au risque d'abuser de ta patience et de tes compétences, je me demandais comment je pourrais non pas sélectionner les cellules du premier auteur au second, mais de la cellule de la colonne B à côté du premier auteur, jusqu'à la cellule de la colonne B juste au dessus du second auteur (bon ça je reconnais que je devrais être en mesure de m'en sortir). Par contre, je voudrais pouvoir créer ue boucle qui, une fois ma première sélection traitée me permettrait de passer à la sélection suivante (entre le second et le troisième auteur etc...),
et là, ça me semble plus compliqué...
Merci encore

EB
0
cs_wape Messages postés 262 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 19 décembre 2010 12
8 juil. 2005 à 13:37
Re,

Pour la boucle de sélection des plages, essaye ceci :

'Sélectionner les plages l'une à la suite de l'autre
For i = 0 To UBound(MaTable)
If i = UBound(MaTable) Then
ActiveSheet.Range(Range(MaTable(i)).Offset(0, 1).Address & ":" & Range("A65536").End(xlUp).Offset(0, 1).Address).Select
Else
ActiveSheet.Range(Range(MaTable(i)).Offset(0, 1).Address & ":" & Range(MaTable(i + 1)).Offset(-1, 1).Address).Select
End If
MsgBox "La plage no " & i + 1 & " a été sélectionnée."
Next i

wape
0
Rejoignez-nous