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

9classeur1.xlsm (28.54 Ko)

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 Sub

Pour 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.

1n34js

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 Sub

k sera le numéro de colonne Code Postal, et n le numéro de la dernière ligne occupée.

Cordialement.

Rechercher des sujets similaires à "macro arguments questions"