Probleme Range en VBA
Résolu
Tydher
Messages postés
123
Date d'inscription
Statut
Membre
Dernière intervention
-
Bidouilleu_R Messages postés 1181 Date d'inscription Statut Membre Dernière intervention -
Bidouilleu_R Messages postés 1181 Date d'inscription Statut Membre Dernière intervention -
9 réponses
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
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)
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
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
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é
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.
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
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
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