Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Colonnes variables Range de données

  • Initiateur de la discussion Initiateur de la discussion nicolas.maychmaz
  • 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 !

N

nicolas.maychmaz

Guest
Bonjour,

Je suis conscient que ce problème a été soulevé plusieurs fois dans les forums mais mon code reste incorrect malgré mes consultations. :-(
En fait j'ai une erreur d'execution 1004 sur ma ligne de définition de range et je ne comprend pas pourquoi sachant qu'un jour auparant j'ai programmé quasiment le même code mais avec des lignes variables. C'est donc bien l'aspect variable des colonnes qui bug mais pourquoi???

En gros je défini un range variable pour un vlookup. Ma variable de colonne est définie par "col" (la partie .Find pour rechercher la valeur de celle-ci fonctionne).
Voici une partie du code:

Dim col As String
Dim Maplage1 As Range
col = Sheets("Base Fonds").Range("A3:IV3").Find(Sheets("VL Fonds").Cells(2, 9).Value, LookIn:=xlValues, LookAt:=xlPart, SearchFormat:=False).Column

Set Maplage1 = Sheets("Base Fonds").Range(Cells(7, col), Cells(65000, col + 1))

For M = 332 To L
If Cells(M, 9).Value = "" Then
Cells(M, 9).Value = Application.VLookup(Cells(M, 1), Maplage1, 2, 0)
End If
Next M


Je remercie par avance ceux qui auront la patience de m'aider 🙂
Nicolas
 
Re : Colonnes variables Range de données

Bonsoir,

essaye peut être ainsi :
Code:
With Sheets("Base Fonds")
    Set Maplage1 = .Range(.Cells(7, col), .Cells(65000, col + 1))
End With

il faut également spécifier la feuille concernée à laquelle les "cells" doivent faire référence...

bonne soirée
@+
 
Re : Colonnes variables Range de données

Bonjour Nicolas, Salutations Pierrot93,

Il me semble qu'il suffirait de déclarer ta variable col en integer, plutôt qu'en string, vu que c'est le résultat d'un Range.find().column
 
Re : Colonnes variables Range de données

Salut nicolas.maychmaz et le forum
sachant qu'un jour auparant j'ai programmé quasiment le même code mais avec des lignes variables.
Quasiment avec du code revient souvent à dire totalement !
Comme Pierrot93 a déjà répondu, je fais juste des remarques :
- donner un extrait d'une macro n'est jamais très bon : en donnant la totalité et ce qu'elle fait il y a souvent des propositions d'amélioration.
- ne connaissant que ton poste, je ne peux juger de la justesse de ta macro, mais... quand tu travailles sur Excel, un minimum de logique évite bien des erreurs : déclarer col en string et l'utiliser en col+1... heureusement qu'excel est assez permissif (propriété column renvoie un Long).
- on est à la génération 2007 et supérieures => on a plus de 65536 lignes et plus de 255 colonnes => si tu travailles pour une boîte, il faut envisager que les versions d'excel puissent évoluer
Code:
...
col = Sheets("Base Fonds").Range("A3:IV3").Find(Sheets("VL  Fonds").Cells(2, 9).Value, LookIn:=xlValues, LookAt:=xlPart,  SearchFormat:=False).Column
...
 Set Maplage1 = Sheets("Base Fonds").Range(Cells(7, col), Cells(65000, col + 1))
...
deviennent
Code:
...
with Sheets("Base Fonds")
    col = .Range(.[A3], .cells(3, columns.count).Find(Sheets("VL  Fonds").Cells(2, 9), LookIn:=xlValues).Column
    ...
     Set Maplage1 = .Range(.Cells(7, col), .Cells(rows.count, col + 1))
    ...
End with
en principe, je réduis toujours mes plages au minimum contenant les informations, et pas toute la colonne, y compris des cellules vides en dehors de la UsedRange. Mais comme j'ai deux colonne (col et col+1), il faudrait que je complique la formule avec le calcul du numéro de ligne le plus élevé entre les deux
Code:
iif(.cells(rows.count, col).end(xlup).row>.cells(rows.count, col+1).end(xlup).row,.cells(rows.count, col).end(xlup).row,.cells(rows.count, col+1).end(xlup).row)
à la place de rows.count. Comme je ne connais pas le gain (temps), je laisse tel quel.
A+
 
Re : Colonnes variables Range de données

Bonjour,

Merci pour vos réponses, ca marche parfaitement maintenant.
J'avais un peu la tête dans le guidon comme on dit et besoin d'un regard extèrieur!

@Gorfael, merci pour ta proposition d'amélioration, il est vrai que j'utilise excel 2003 et qu'il serait judicieux de penser à l'éventualité d'un passage aux versions supérieures.


@+
Nicolas
 
- 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

L
Réponses
4
Affichages
779
Lindsay_RBD
L
Réponses
68
Affichages
8 K
Etoto0026
E
B
Réponses
2
Affichages
2 K
bastienb
B
N
Réponses
5
Affichages
3 K
Nicocotte125
N
Réponses
1
Affichages
986
D
  • Question Question
Réponses
7
Affichages
1 K
Dymouille
D
L
Réponses
1
Affichages
1 K
Lucien31
L
S
Réponses
4
Affichages
2 K
stage_ferrit
S
J
Réponses
9
Affichages
3 K
joaoratao
J
R
Réponses
8
Affichages
2 K
raoulruiz
R
A
Réponses
48
Affichages
6 K
Ananas94
A
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…