Nommer une plage à partir de Find (je crois)... [Résolu]

Signaler
Messages postés
17
Date d'inscription
lundi 4 juillet 2005
Statut
Membre
Dernière intervention
8 août 2005
-
Messages postés
17
Date d'inscription
lundi 4 juillet 2005
Statut
Membre
Dernière intervention
8 août 2005
-
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

Messages postés
17
Date d'inscription
lundi 4 juillet 2005
Statut
Membre
Dernière intervention
8 août 2005

Merci beaucoup,

Tout marche à merveille !
3
Merci

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

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

Messages postés
262
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
19 décembre 2010
6
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
Messages postés
17
Date d'inscription
lundi 4 juillet 2005
Statut
Membre
Dernière intervention
8 août 2005

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
Messages postés
262
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
19 décembre 2010
6
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
Messages postés
17
Date d'inscription
lundi 4 juillet 2005
Statut
Membre
Dernière intervention
8 août 2005

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
Messages postés
262
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
19 décembre 2010
6
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