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   -
Bonjour une fois de plus à tous.

Apres avoir recuperer des valeurs dans mes variables je souhaite faire un traitement en utilisant un Range :

Range("indexG:indexQte,indexJalons:indexJalons,indexCI:indexRemarques-1,indexIRP:indexCE+1").Select 
    With Selection 
        .HorizontalAlignment = xlCenter 
        .VerticalAlignment = xlCenter 
        .Orientation = 0 
        .AddIndent = False 
        .MergeCells = False 
    End With


Cependant, il ne marche pas et j'ai une erreur de type :
La methode Range de l'objet Global .....

Merci

9 réponses

Tydher Messages postés 123 Date d'inscription   Statut Membre Dernière intervention   6
 
Up,

Ca ne marche toujours pas, pourtant en faisant comme ci-dessous ça fonctionne

Range("A1:L3,M8:BS4...")


Merci
0
Bidouilleu_R Messages postés 1181 Date d'inscription   Statut Membre Dernière intervention   295
 
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



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)
0
Tydher Messages postés 123 Date d'inscription   Statut Membre Dernière intervention   6
 
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
0
Tydher Messages postés 123 Date d'inscription   Statut Membre Dernière intervention   6
 
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Tydher Messages postés 123 Date d'inscription   Statut Membre Dernière intervention   6
 
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é
0
Bidouilleu_R Messages postés 1181 Date d'inscription   Statut Membre Dernière intervention   295
 
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.
0
Tydher Messages postés 123 Date d'inscription   Statut Membre Dernière intervention   6
 
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
0
Bidouilleu_R Messages postés 1181 Date d'inscription   Statut Membre Dernière intervention   295
 
je regarde
0
Tydher Messages postés 123 Date d'inscription   Statut Membre Dernière intervention   6
 
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 :

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
0
Bidouilleu_R Messages postés 1181 Date d'inscription   Statut Membre Dernière intervention   295
 
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!


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
0