Macro et cellule avec arguments - Questions
Bonjour ,
J'aimerais savoir si c'etait possible d'intéragir avec un argument d'une cellule d'excel et des macros?
Je m'explique , je fais souvent du publipostage et comme souvent les codes postaux avec le 0 sont souvent absent.
A partir de cela, je me suis fait plusieurs macros avec l'enregistreur mais pour la création de la macro j'ai mis pour que cela soit plus simple le champ "CODEPOSTAL" dans la colonne A.
Sachant que dans le réel, les colonnes "CODEPOSTAL" peuvent se situer n'importe ou.
Est il possible d'attribuer sur la feuille1 (j'ai crée des boutons) dans une cellule la colonne "CODEPOSTAL" et la ligne de fin et que cela soit pris en compte dans ma macro ?
Car sinon je suis obligé de modifié les macros à la mains pour saisir la colonne et les lignes voulu pour chaque macro.
j'ai joint mon fichier pour que vous puissiez voir.
Crdl
Bonsoir,
Je comprends pas bien, d'une part tu as loupé ton coup, les codes postaux sont dépourvus de 0 devant...
D'autre part, colonnes ou lignes variables, ça se calcule, à chaque fois pour être sûr du résultat !
Et l'utilisation du Filtre serait plus heureuse que cette intro de colonne avec formule...
Cordialement.
re,
Le 0 est absent car le fichier n'est pas modifié pour l'instant.
Si tu clics sur le "bouton1" de la feuille 1 qui correspond aux "codes postaux" cela mettra le 0 absent devant chaques codes postaux de la colonne A sur le feuille 2.
Voici le code fait par l'enregistreur:
Sub CodesPostaux()
'
Worksheets("Feuil2").Select
Columns("B:B").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("B2").Select
ActiveCell.FormulaR1C1 = "=RIGHT(""0""&RC[-1],5)"
Selection.AutoFill Destination:=Range("B2:B26"), Type:=xlFillDefault
Range("B2:B26").Select
Columns("A:A").Select
Selection.NumberFormat = "@"
Range("B2:B26").Select
Selection.Copy
Range("A2:B26").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("B:B").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
End SubPour faire la macro j'ai mis les codes postaux sur la colonne A de la feuille 2 pour faire mes tests.
Sachant que lorsque je récupère des fichiers excel , la colonne "code postale" peut se trouver n'importe ou, en B ou C etc avec des nombres de lignes différentes que celle que j'ai mis pour mon exemple.
Y aurait il une fonction pour que je puisse préciser dans la feuille 1, la colonne voulu et la ligne de fin par exemple.
Sinon je dois modifier à la main les valeurs:
Range("A2:B26").Select
Range("B2:B26").Select
etc ...
Apres je sais pas si c'est possible vu que j’insère une colonne
Ceci te permet de dimensionner ta base en lignes, et de trouver la colonne Code Postal :
Sub Test()
Dim n%, k%, i%
With Worksheets("x") 'remplacer x par nom de feuille
For i = 1 To .Cells(1, Columns.Count).End(xlToLeft).Column
If UCase(.Cells(1, i)) Like "*POSTAL*" Then k = i: Exit For
Next i
n = .Cells(.Rows.Count, k).End(xlUp).Row
End With
End Subk sera le numéro de colonne Code Postal, et n le numéro de la dernière ligne occupée.
Cordialement.