Probleme Range en VBA
Résolu/Fermé
Tydher
Messages postés
123
Date d'inscription
vendredi 5 juin 2009
Statut
Membre
Dernière intervention
17 mai 2011
-
Modifié par Tydher le 20/04/2011 à 14:07
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 - 21 avril 2011 à 14:05
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 - 21 avril 2011 à 14:05
9 réponses
Tydher
Messages postés
123
Date d'inscription
vendredi 5 juin 2009
Statut
Membre
Dernière intervention
17 mai 2011
6
21 avril 2011 à 08:57
21 avril 2011 à 08:57
Up,
Ca ne marche toujours pas, pourtant en faisant comme ci-dessous ça fonctionne
Merci
Ca ne marche toujours pas, pourtant en faisant comme ci-dessous ça fonctionne
Range("A1:L3,M8:BS4...")
Merci
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
293
21 avril 2011 à 09:27
21 avril 2011 à 09:27
Bonjour,
d'abord on ne sait pas ce que contient les variables indexG....
Range("indexG:indexQte,indexJalons:indexJalons,indexCI:indexRemarques-1,indexIRP:indexCE+1").Select
mais au vu de cette ligne ....
Range("A1:L3,M8:BS4...")
Je te propose ceci
explication : maListe contiendra "A1,b4,E2"
alors que chez toi il y a "A1","b4","E2" ;-)
une autre possibilité serait d'utiliser la méthode Cells (ligne,colonne)
d'abord on ne sait pas ce que contient les variables indexG....
Range("indexG:indexQte,indexJalons:indexJalons,indexCI:indexRemarques-1,indexIRP:indexCE+1").Select
mais au vu de cette ligne ....
Range("A1:L3,M8:BS4...")
Je te propose ceci
Sub test1() Dim index1 As String Dim index2 As String Dim index3 As String Dim maListe As String index1 = "A1" index2 = "b4" index3 = "E2" maListe = index1 + "," + index2 + "," + index3 Range(maListe).Select End Sub
explication : maListe contiendra "A1,b4,E2"
alors que chez toi il y a "A1","b4","E2" ;-)
une autre possibilité serait d'utiliser la méthode Cells (ligne,colonne)
Tydher
Messages postés
123
Date d'inscription
vendredi 5 juin 2009
Statut
Membre
Dernière intervention
17 mai 2011
6
Modifié par Tydher le 21/04/2011 à 09:47
Modifié par Tydher le 21/04/2011 à 09:47
En fait le probleme viens du fait que je ne connais pas les valeurs de mes index, car selon les feuille excel, les index seront differents.
Je fait juste avant le Range une boucle qui me récupere un int.
Ce int correspond au numéro de ma colonne.
Apres je veux donc selectionné mes colonne selon les int stockés dans mes variables
Je fait juste avant le Range une boucle qui me récupere un int.
Ce int correspond au numéro de ma colonne.
Apres je veux donc selectionné mes colonne selon les int stockés dans mes variables
Tydher
Messages postés
123
Date d'inscription
vendredi 5 juin 2009
Statut
Membre
Dernière intervention
17 mai 2011
6
21 avril 2011 à 09:56
21 avril 2011 à 09:56
Il faudrait en fait donc que j'associe la cellule A1, par exemple, à ma variable indexX.
Sauf que si je fait :
indexX = Cells(1,i)
l'index récupere ce qui se trouve dans la cellule et non l'emplacement
Sauf que si je fait :
indexX = Cells(1,i)
l'index récupere ce qui se trouve dans la cellule et non l'emplacement
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Tydher
Messages postés
123
Date d'inscription
vendredi 5 juin 2009
Statut
Membre
Dernière intervention
17 mai 2011
6
21 avril 2011 à 10:30
21 avril 2011 à 10:30
J'ai modifié le type de mes variables en String et j'ai rajouté dans ma boucle :
[CODE]...
indexG = Cells(1,i).Address
...[/CODE]
Cependant j'en suis toujours au même point.
Erreur : la methode Range de l'objet _globlal a echoué
[CODE]...
indexG = Cells(1,i).Address
...[/CODE]
Cependant j'en suis toujours au même point.
Erreur : la methode Range de l'objet _globlal a echoué
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
293
21 avril 2011 à 12:50
21 avril 2011 à 12:50
fais voir ce que tu as écris dans ta procédure ce sera plus simple.
sinon je te fais un exemple de sélection de trois plage avec Range ou cells.
sinon je te fais un exemple de sélection de trois plage avec Range ou cells.
Tydher
Messages postés
123
Date d'inscription
vendredi 5 juin 2009
Statut
Membre
Dernière intervention
17 mai 2011
6
21 avril 2011 à 13:09
21 avril 2011 à 13:09
Ok voila le code, mes index sont déclarés en String. En commentaire apparait un peu tout ce que j'ai essayé
i = 1 For j = 1 To nombreColonne entete = Cells(1, j).Value If (entete = "G") Then indexG = Cells(1, i).Address ElseIf (entete = "QTE") Then indexQte = Cells(1, i).Address ElseIf (entete = "J") Then indexJ = Cells(1, i).Address ElseIf (entete = "CI") Then indexCI = Cells(1, i).Address ElseIf (entete = "Engagement") Then indexEngagement = Cells(1, i).Address ElseIf (entete = "REMARQUES") Then indexRemarques = Cells(1, i - 1).Address ElseIf (entete = "CE") Then indexCE = Cells(1, i).Address End If i = i + 1 Next j '------------------------------------------------------------------------ 'UNMERGE des cellules de la 1ere ligne '----------------------------------------------------------------------- 'Range("indexG:indexQte,indexJ:indexJ,indexCI:indexEngagement,indexRemarques:indexCE").Select 'Range(indexG, indexQte).Select 'Range(Cells(indexG), Cells(indexQte)).Select Set c = Union([indexG:indexQte], [indexJalons:indexJalons], [indexCI:indexEngagement], [indexRemarques:indexCE]).Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .Orientation = 0 .AddIndent = False .MergeCells = False End With
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
293
21 avril 2011 à 13:20
21 avril 2011 à 13:20
je regarde
Tydher
Messages postés
123
Date d'inscription
vendredi 5 juin 2009
Statut
Membre
Dernière intervention
17 mai 2011
6
21 avril 2011 à 13:53
21 avril 2011 à 13:53
Suite a mes recherches et discussions sur un autre forum, j'ai réussi en mettant mes variables index en type Object. Et en modifiant un peu ma boucle j'ai donc :
Merci beaucoup
i = 1 For j = 1 To nombreColonne entete = Cells(1, j).Value If (entete = "G") Then set indexG = Cells(1, i) ElseIf (entete = "QTE") Then set indexQte = Cells(1, i) ElseIf (entete = "J") Then set indexJ = Cells(1, i) ElseIf (entete = "CI") Then set indexCI = Cells(1, i) ElseIf (entete = "Engagement") set Then indexEngagement = Cells(1, i) ElseIf (entete = "REMARQUES") set Then indexRemarques = Cells(1, i - 1) ElseIf (entete = "CE") Then set indexCE = Cells(1, i) End If i = i + 1 Next j '------------------------------------------------------------------------ 'UNMERGE des cellules de la 1ere ligne '----------------------------------------------------------------------- Union(Range(indexG, indexQte), Range(indexJ, indexJ), Range(indexCI, indexEngagement), Range(indexRemarques, indexCE)).Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .Orientation = 0 .AddIndent = False .MergeCells = False End With
Merci beaucoup
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
293
21 avril 2011 à 14:05
21 avril 2011 à 14:05
Pour ceux qui liront ce post, il y a plus simple
mais je réponds à la question...
il y a plusieurs erreur dans ton code
en fait il y avait deux fois la même adresse..
je te propose de faire comme ça!
ce qui ne changera pas beaucoup ton code!
mais je réponds à la question...
il y a plusieurs erreur dans ton code
en fait il y avait deux fois la même adresse..
je te propose de faire comme ça!
ce qui ne changera pas beaucoup ton code!
Sub test() ' je prends une colonne loin à droite ici Ax1 ' nombreColonne = Range("ax1").End(xlToLeft).Column Dim C As Variant For Each C In Range(Cells(1, 1), Cells(1, nombreColonne)) Select Case C.Value Case Is = "G" indexG = C.Address Case Is = "QTE" indexQte = C.Address Case Is = "J" indexJ = C.Address Case Is = "CI" indexCI = C.Address Case Is = "Engagement" indexEngagement = C.Address Case Is = "REMARQUES" indexRemarques = C.Offset(0, -1).Address Case Is = "CE" indexCE = C.Address End Select Next C monEntete = indexG + "," + indexQte + "," + indexJ + "," + indexCI + "," + indexEngagement + "," + indexRemarques + "," + indexRemarques + "," + indexCE Range(monEntete).Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .Orientation = 0 .AddIndent = False .MergeCells = False End With End Sub