XL 2016 VBA attribuer des constantes à plusieurs colonnes

Fabien35200

XLDnaute Nouveau
Bonjour à tous,


Je cherche à attribuer des constantes à plusieurs colonnes afin de pouvoir les modifier au début du programme si mon tableau venait à évoluer.
Par exemple sur cette ligne de code :
VB:
wkA.Worksheets("Feuil1").Cells(h, 1).Value = .Cells(j, 2).Value

la valeur " 1 " dans " Cells(h, 1) " représente la colonne A.
Si la colonne A vient à être deplacer ,j aimerai que l ensemble de mon code s adapte en fonction de la constante.
Merci à tous pour votre aide.
 
Solution
C
Bonjour Fabien35200

Les constantes ne sont pas la solution, comme le nom l'indique une constante est une valeur figée
Certes que l'on peut modifier, mais ce n'est pas pratique

En général dans un tableau on a une ligne d'en-tête
Ce que je fais, j'utilise une fonction qui me permet de trouver la cellule contenant l'en-tête cherchée
VB:
' Fonction créée par BrunoM45 pour trouver une colonne
' Les paramètres sont les suivant :
' sFeuil  = nom de la feuille ou chercher en valeur texte
' NumLig = numéro de ligne ou chercher
' Quoi = Valeur à trouver
' Attention : Par défaut la recherche se fait sur une partie du contenu de la cellule
'
Function ColFind(sFeuil As String, NumLig As Integer, Quoi As Variant)
  On Error Resume Next
  With...
C

Compte Supprimé 979

Guest
Bonjour Fabien35200

Les constantes ne sont pas la solution, comme le nom l'indique une constante est une valeur figée
Certes que l'on peut modifier, mais ce n'est pas pratique

En général dans un tableau on a une ligne d'en-tête
Ce que je fais, j'utilise une fonction qui me permet de trouver la cellule contenant l'en-tête cherchée
VB:
' Fonction créée par BrunoM45 pour trouver une colonne
' Les paramètres sont les suivant :
' sFeuil  = nom de la feuille ou chercher en valeur texte
' NumLig = numéro de ligne ou chercher
' Quoi = Valeur à trouver
' Attention : Par défaut la recherche se fait sur une partie du contenu de la cellule
'
Function ColFind(sFeuil As String, NumLig As Integer, Quoi As Variant)
  On Error Resume Next
  With Sheets(sFeuil).Rows(NumLig)
    ColFind = 0
    ColFind = .Find(What:=Quoi, LookIn:=xlValues, LookAt:=xlPart, _
    SearchOrder:=xlByColumns, MatchCase:=False).Column
  End With
  On Error GoTo 0
End Function
De là, j'en déduit le numéro de colonne

Donc ton code pourrait s'écrire
Code:
Col1 = ColFind("NomFeuil",1,"Entête1Cherchée")
Col2 = ColFind("NomFeuil",1,"Entête2Cherchée")
wkA.Worksheets("Feuil1").Cells(h, Col1).Value = .Cells(j, Col2).Value

Voilà ;-)
 
Dernière modification par un modérateur:

Discussions similaires

Réponses
0
Affichages
201

Statistiques des forums

Discussions
312 848
Messages
2 092 787
Membres
105 534
dernier inscrit
EmilieG60