Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/08/2011, 14h59   #1
Invité de passage
 
Inscription : août 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 20
Points : 0
Points : 0
Par défaut Sélectionne plage comprise entre _ et _

Bonjour le forum,

Comment puis-je sélectionner une plage de données (sous forme d'une seule colonne) allant d'une cellule appelée "C Nature contrat" jusqu'à une autre cellule appelée "Total CDI 2010" ?

A noter que ces deux cellules se trouveront toujours dans la même colonne mais pas sur les mêmes lignes.

Je suis encore une fois bloquée et m'en remets à vous

MERCI.
Mag555 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2011, 18h00   #2
Invité de passage
 
Inscription : août 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 20
Points : 0
Points : 0
Personne pour éclairer ma lanterne ???

Je bidouille sur le code ci dessous, mais pour l'instant rien de concluant

Code :
1
2
3
4
5
6
Dim x10 As Integer, y10 As Integer
 
    x10 = Range("E14:E500").Find("C Nature Contrat", LookIn:=xlValues).Offset(0, 1).Select
    y10 = Range("E14:E500").Find("Total CDI 2010", LookIn:=xlValues).Offset(-1, 0).Select
 
    Range("E14:E500").Find("Total CDI 2010", LookIn:=xlValues).Offset(0, 1).Formula = "=Sum(F" & x10 & ", F" & y10 & ")"
Merci d'avance
Mag555 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2011, 18h14   #3
Membre actif
 
Inscription : novembre 2008
Messages : 188
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 188
Points : 194
Points : 194
Je ne sais pas où tu as trouvé ce code mais ça ne correspond pas vraiment à ce que tu veux...

Pour seulement sélectionner ta colonne, tu peux faire comme cela (en considérant que ta colonne est la colonne E):

Code :
1
2
3
4
5
6
7
8
Public Sub Macro1()
 
Dim maColonne As Range
    Set maColonne = ActiveSheet.Columns(5)
 
Range(maColonne.Find("C Nature Contrat"), maColonne.Find("Total CDI 2010")).Select
 
End Sub
Sclarckone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2011, 19h07   #4
Invité de passage
 
Inscription : août 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 20
Points : 0
Points : 0
Ouf ton code est beaucoup plus léger que le mien.. Merci ca fait du bien..

Pour réponse, j'ai trouvé une partie du mien sur un forum et ai essayé de l'aménager à ma sauce sans grande conviction comme tu l'as vu.

En tout cas, merci beaucoup. 2 petites questions au demeurant :

1) Y-a-t-il possibilité de lancer la recherche dans la colonne à partir d'une ligne particulière ?

Car j'ai deux lignes d'en-têtes similaires et c'est la deuxième qui m'intéresse.


2) A partir de cette fonction, comment dois-je articuler ma somme ?

J'aimerais un truc du genre activecell.Formula = "=SUM(Range(maColonne.Find("C Nature Contrat"), maColonne.Find("Total CDI 2010"))"

D'avance merci, vous m'épatez encore.
Mag555 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2011, 22h42   #5
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 847
Points : 16 847
Envoyer un message via Skype™ à bbil
Je suppose que ta somme ne s'applique peu-être pas à ta plage de recherche ... mais le code suivant est facilement adaptable :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub MaSomme()
 Dim sh As Worksheet 'Feuille concernée
 Dim rSource As Range 'plage de recherche
 Dim rDest As Range 'cellule destation
 Dim rDeb As Range '1° Cellule somme
 Dim rFin As Range 'derniére cellule somme
 Dim c As Range 'Cellule
 Const ST_DEB = "C Nature Contrat" 'Chaine à recherché au début
  Const ST_FIN = "Total CDI 2010" 'Chaine fin de plage
Set sh = ThisWorkbook.Sheets("Feuil1") 'Défini la feuille
Set rSource = sh.Range("D4:D65535")
For Each c In rSource
  If c = ST_DEB Then Set rDeb = c
  If c = ST_FIN Then Set rFin = c
Next
If rDeb Is Nothing Or rFin Is Nothing Then
  MsgBox "Chaine Début/Fin incorrectes"
Else
    Set rDest = rFin.Offset(0, 1) ' Décale d'un cran à droite de rFin le total
    rDest.Formula = "=SUM(" & rDeb.Address & ":" & rFin.Address & ")"
 
End If
End Sub
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2011, 23h21   #6
Invité de passage
 
Inscription : août 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 20
Points : 0
Points : 0
Merci bbil

J'ai décortiqué ton code et je pense l'avoir bien compris.
J'enlèverais juste les lignes 16 17 18 correspondant à la fonction IF qui ne semblent pas nécessaires dans mon cas. Je peux directement aller à la ligne 19 si je suis sûre que la macro va me trouver ces deux cellules ( "C Nature Contrat" et "Total CDI 2010".

Il faut juste que je pense à adapter le nom de ma feuille ainsi que la plage de la fonction Range.

Merci encore! La prochaine étape sera l'application de mon userform à un ensemble d'onglets. Ca te paraît jouable vu la longueur de mon code??
Mag555 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h23.


 
 
 
 
Partenaires

Hébergement Web