Probleme RANGE en VBA

  • Initiateur de la discussion Initiateur de la discussion tydher
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

T

tydher

Guest
Bonjour à tous,

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

Code:
Range("indexG:indexQte,indexJalons:indexJalons,indexCI:indexRemarques-1,indexI: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 à échoué

En fait, pour apporter plus de détails, avant le Range, j'ai une boucle qui me récupere le numéro de la colonne, car selon les feuilles Excel, les colonnes ne sont pas aux mêmes endroits.

Il faudrait donc que j'associe la cellule A1, par exemple, à ma variable indexX.
Sauf que si je fait :

Code:
indexX = Cells(1,i)
l'index récupere ce qui se trouve dans la cellule et non l'emplacement

J'ai modifié le type de mes variables en String et j'ai rajouté dans ma boucle :

Code:
...
indexG = Cells(1,i).Address
...

Cependant j'en suis toujours au même point.
Erreur : la methode Range de l'objet _globlal a echoué

Votre aide est la bienvenue
 
Re : Probleme RANGE en VBA

Cela ne marche pas. Dans ma boucle quand j'insere une ligne tel que

Code:
For j = 1 To nombreColonne
    entete = Cells(1, j).Value
   
   If (entete = "G") Then
     Set indexG = Cells(1, i)

il me met que l'objet est requis
 
Re : Probleme RANGE en VBA

Voila la partie la plus interessante. Mes variables sont des String
Je souhaite récuperer les en-tete de colonne dans des variables (les adresses d'en tete) et ensuite de defusionner ces en-tete
En commentaire apparait un peu tout ce que j'ai testé

Code:
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
 
Re : Probleme RANGE en VBA

Ha mais quel génie ça fonctionne.
Il fallait donc changer le type de variable String -> Object et ecrire le "Union Range" comme le proposait Softmama

Merci beaucoup à vous
 
Re : Probleme RANGE en VBA

Pour récapituler j'ai donc :

Code:
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
2
Affichages
739
Réponses
3
Affichages
852
Retour