Pourquoi ma macro elle marche pas d'abord? Pb de range...

A

Arsene

Guest
Bonjour tout le monde!
Une journée de travail, n'en serait pas une vraie si je ne vennais sur le forum pour recevoir un petit coup de pouce!
Alors voilà une nouvelle question toute chaude...

Voilà un bout de macro:

With Worksheets(base)
ligne_bas = 1

While .Range("Q1").Offset(ligne_bas, 0).Value <> ""
ligne_bas = ligne_bas + 1
Wend

.Range(Cells(2, 17), Cells(ligne_bas, 17)).name = "COUIC" *********
End With

Malheureusement pour moi il ne fonctionne pas, et le debugger me surligne la ligne avec les ****...
Si vous y en a comprendre pourquoi ça pas marcher, moi tres content savoir comment faire, car moi y en a plus comprendre là... Moi casser le PC sur tête mon voisin!!!GRUMPF lol

Merci d'avance. :)
 
T

Tao.tix

Guest
Bonjour Arsène,

ton pb me semble provenir du fait qu'il manque les guillemets devant et derrière tes *******

.Range(Cells(2, 17), Cells(ligne_bas, 17)).name = "COUIC *********"

me semble plus correct.

essaye pour voir
 
P

Pascal76

Guest
Salut

Pour l'instant je ne vois pas ce qui ne marche pas mais il y a une chose qui m'étonne.
je suppose que tu as directement fait un copier coller de ton code et le terme name est ecrit avec un n minuscule. Bizarre !! VBA le met en majuscule

Pascal
 
P

Pascal76

Guest
Re

Par rapport à ce que dis Tao.tix je suis parti du fait que tes ******** n'étaient pas dans ton code mais juste pour indiquer la ligne dans le forum sinon c'est sûr que cela ne doit pas trop plaire.

Pascal
 
A

Arsene

Guest
lol
Merci Tao, mais c'est de la façon dont Pascal a compris qu'il fallait comprendre. Les étoiles je les ai ajoutées pour montrer la ligne qui bugge.
Quoiqu'il en soit je n'arrive pas du tout à comprendre...
Dans le module où est situé ce bout de code, quelque soit l'expression
Range(X).Name, celle ci est immédiatemment réecrite Range(X).name...
Pourquoi qu'il me vire ma majuscule? Mais même sans la majuscule, ça semble marcher à partir du moment où je fais juste un Range(etc.) et pas un Worksheets(X).Range(etc.).
Mais le truc c'est que ça renomme un range qui se situe sur la feuille où se trouve le CommandButton qui lance la macro! Et moi la range que je veux nommer, se trouve dans une autre feuille...

Signé Arsene qui va encore debugger toute l'après midi, et que son patron va lui dire: " Alors ça avance?" et qu'il va voir que rien n'a avancé! LOL ;)

Merci à ceux qui se penchent sur mon probleme!
 
P

Pascal76

Guest
Re

Dis je viens de faire des tests et à première vue il faut sélectionner la feuille dans laquelle tu veux donner un nom sur une plage

exemple sheets("Feuil2").select
range(cells(1,1),cells(2,3)).name="Couic"

De plus la macro doit être écrite dans un module

J'espère que cela ira

Pascal
 
A

Arsene

Guest
Ayai, je viens d'essayer en l'écrivant dans un module, et rien n'y fait...
Toujours sur la même ligne quil bugge...
"Erreur définie par l'application ou par l'objet error 1004" qu'il me dit...

Bon je vous file la macro entière commentée:

Public Sub prout()

Dim i As Integer

Dim donnees_selectionnees As String
Dim base As String
Dim ligne_bas, ligne_trouve As Integer

detourne *** Une fonction qui me permet de faire fonctionner le Application.GoTo qui suit et qui m'avait bien saoulé...***

***Voilà une boucle qui me permet de récupérer le nom des données sélectionnées par l'utilisateur à l'intérieur d'une listbox présente sur la feuille***

With Worksheets("Severity")
For i = 0 To .ListBoxSelectSeries.ListCount - 1
If .ListBoxSelectSeries.Selected(i) Then
donnees_selectionnees = .ListBoxSelectSeries.List(i)
End If
Next i
End With

***Je vais à la référence correspondant au choix de l'utilisateur, et j'y récupère le nom d'une feuille sur laquelle je vais devoir travailler( on stocke ce nom dans "base" )***

Application.Goto Reference:=donnees_selectionnees

base = ActiveCell.Offset(0, 3).Value

*** J'applique un filtre à Tab_données qui se situe dans la feuille voulue***
Worksheets(base).Range("Tab_donnees").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets _
("Filtres").Range(donnees_selectionnees), CopyToRange:=Worksheets(base).Range("M1"), _
Unique:=False
*** Je récupere dans la colonne où vont se mettre les données filtrées la range contenant ces données, et j'essaye de renommer cette range "COUIC" ***
With Worksheets(base)
ligne_bas = 1
While .Range("Q1").Offset(ligne_bas, 0).Value <> ""
ligne_bas = ligne_bas + 1
Wend
.Range(Cells(2, 17), Cells(ligne_bas, 17)).name = "COUIC"***ICI QUE CA FOIRE***
End With
'Worksheets(base).


With WSWORK.Range("AB1")
ligne_trouve = 1
While .Offset(ligne_trouve, 0).Value <> donnees_selectionnees
ligne_trouve = ligne_trouve + 1
Wend

.Offset(ligne_trouve, 1).Value = "COUIC"
.Offset(ligne_trouve, 2).Value = 6666
End With

End Sub

Bon bah voilà... je désespère là... j'ai beau chercher comme un dingue d'où vient cette erreur, je ne trouve rien...
Merci de votre aide!
 
A

Arsene

Guest
Re!!
Pas la peine de lire mon pavé, ça marche comme t'as dit Pascal!
Désolé d'avoir écrit tout ça mais ce fut long et j'ai vu ton message qu'après l'avoir posté!
CA MARCHE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
lol
OUF... MERCI!!! :)

Bon je vais essayer de continuer, et je reviens dès que j'ai un nouveau bug insoluble! lol c'est à dire très bientôt!

Encore merci Pascal!
 

Statistiques des forums

Discussions
313 138
Messages
2 095 627
Membres
106 308
dernier inscrit
F.DIAS