IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

population d'un array en selectionnant un range [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2017
    Messages
    529
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2017
    Messages : 529
    Points : 324
    Points
    324
    Par défaut population d'un array en selectionnant un range
    Bonjour a vous tous,


    J'ai deux array a remplir mais j'ai 725 numéro à saisir pour chacun des array. Le premier array est une valeur de départ et le second array est la valeur d'arriver.


    Afin d'éviter les erreurs de saisies et avoir également un gain de temps, je voudrais avoir une fonction ou une sub permettant d'avoir chacune des valeurs d'un range le tout entre parenthèse et séparé de virgule afin que je puisse faire un copier coller dans mon autre code. Étant donné que je prends les informations d'un fichier "temporaire", je voudrais prendre ces informations et les coller dans un code.


    Par exemple j'aurais le range ("a1:a5)

    a1=2
    a2=6
    a3=7
    a4=2
    a5=9

    et je voudrais pouvoir avoir (2,6,7,2,9)


    Je sais qu'il existe WorksheetFunction.Transpose et application.transpose mais toute mes tentatives ont été des échecs en essayant d'utilisé ces functions






    merci pour votre aide qui m'est très précieuse !!

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Mauvaise idée de les transcrire en dur dans le code.
    Par contre tu peux faire
    Tablo=range("a1:a200")
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  3. #3
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour

    Il semble que tu veuilles que ces données d'une plage soient mises dans un array et non une matrice.
    La chose est certes réalisable (assez facilement), mais le jeu en vaut-il la chandelle ?
    Quel est le but final ?
    En d'autres termes, à quoi, très précisément, veux-tu ensuite utiliser cet array ?
    Ta réponse nous permettra de déterminer s'il est vraiment indispensable d'utiliser un array ou si une matrice (voir la réponse de Mercatog, que je salue) peut également faire l'affaire
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  4. #4
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2017
    Messages
    529
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2017
    Messages : 529
    Points : 324
    Points
    324
    Par défaut
    Bonjour a vous tous, (mercatog et unparia )



    Pour faire un histoire courte, j'ai des doublons dans une base de donné, j'ai environ 725 doublons que nous avons désactiver et qu'il risque d'avoir des problèmes d'intégrations dans mon logiciel. JE veux donc remplacer les 725 doublons par des numéro d'actif.


    Ce que j'ai pensé c'Est ceci (mercatog m'a aidé à faire le code dans un précédent code étant donné que je commence a peine a utilisé les array)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    valeur_depart = Array(99, 262, 264, 270, 273, 274, 276, 277, 278, 282, 283, 285, 291, 294, 295, 301, 306, 444, 475, 476, 479, 480)
    valeur_voulu = Array(17, 261, 261, 267, 271, 272, 261, 269, 261, 260, 271, 258, 271, 269, 254, 271, 296, 435, 261, 474, 427, 258)
     
    For i = 0 To UBound(valeur_depart)
     
    Range("no_format_travail").Replace What:=valeur_depart(i), Replacement:=valeur_voulu(i), LookAt:=xlWhole
     
     Next i
    Il manque énormément de valeur dans mes array et en saisisant j'ai constaté qu'il est tres facile de faire des erreurs.


    J'ai une liste dans un fichier excel des doublons et leur équivalent en produit actif, mais je voudrais éviter de trainer dans mon document de travail une copie de cette feuille.



    JE veux donc trouver une solution pour éviter de saisir les 725 doublons et 725 équivalent et les erreurs toute en évitant de trainer un autre feuille dans mon fichier de travail.


    Il y a peut être d'autre solution plus rapide et aussi efficace



    en vous remerciant !!!

  5. #5
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonjour
    ça ne serait pas opportun de dédier deux colonnes d'une feuille du classeur qui permettra de changer l'ancienne valeur par la nouvelle!

    Coder un array en dure de 750 valeurs... quelle est la valeur ajouté ou l'utilité.

    En plus, est ce que ceci est répétitif ou sur un seul fichier
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  6. #6
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2017
    Messages
    529
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2017
    Messages : 529
    Points : 324
    Points
    324
    Par défaut
    Bonjour mercatog

    ça ne serait pas opportun de dédier deux colonnes d'une feuille du classeur qui permettra de changer l'ancienne valeur
    Pour cette question, oui il serait possible que je copie la feuille ayant les colonne des doublons ainsi que le produit a pointé.


    Coder un array en dure de 750 valeurs... quelle est la valeur ajouté ou l'utilité.
    Étant donné que je connais pas d'autre solution dû a mon niveau de VBA c'Est à ce que j'ai aboutie. Effectivement 750 valeur X2 c'Est plus que pénible. Donc c'Est le poruqoi de vouloir "by passer" cette étape


    En plus, est ce que ceci est répétitif ou sur un seul fichier
    C'est pour mettre dans un code dans mon personnal.xlsb dans un fichier e travail qui va etre utilisé a plusieurs reprise. Donc cette conversion est pour un fichier qui va etre réutilisé.





    Possiblement que vous avez de meilleur solution que les arrays.



    J'attends donc de vos nouvelles, chers ami

  7. #7
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonsoir
    Personnellement je ferai une feuille à part avec 2 colonnes A: Ancienne valeur, B nouvelle valeur

    Sur ma feuille de travail, J'insère une nouvelle colonne juste après la colonne à corriger où je ferai une recherchev. Ensuiteje fige les résultats et je supprime la colonne A (l'ancienne)

    en B2 (colonne insérée)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SIERREUR(RECHERCHEV($A2;Clients!$A:$B;2;FAUX);$A2)

    Ceci pourra être traduit par vba
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  8. #8
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2017
    Messages
    529
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2017
    Messages : 529
    Points : 324
    Points
    324
    Par défaut
    Bonjour mercatog,

    Pour pouvoir faire cette manipulation, je devrais également saisir les non doublons avec leur équivalence qui est la meme dans la seconde colonne. J'ai environ 22000 ligne que je devrais alors saisir.


    Sinon c'Est de faire une recherchev copier seulement ceux qui ont des données le hic c'Est que j'utilise le document de travail jusqu'à 15 fois par jour ... donc 15 fois la recherchev, ce n'est pas efficace.


    SI je le fais en code, je dois faire recherchev pour chacun des formats, voir si la valeur retourner est différente que #n/a, si c'est le cas la valeur le numéro de format prends la nouvelle valeur ... le temps d'exécution doit etre assez long, je fais parfois des recherchev sur une boucle et c'Est assez lents.


    Je pense que des rechercher / remplacer sur une colonne est plus rapide qu'une boucle combiner de recherchev avec des if ... J'ai peut être tord ?

  9. #9
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    La formule tient compte des n/a. Sans doublons
    Faisable en vba sans boucle

    Reste à verifier le temps d'execution par rapport à une boucle de recherche/ remplace 750 fois.

    Mais ecrire le tableau en dur dans le code est la pire des choses
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  10. #10
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Ce qui m'interpelle fortement c'est ceci :
    Pour faire un histoire courte, j'ai des doublons dans une base de donné, j'ai environ 725 doublons que nous avons désactiver et qu'il risque d'avoir des problèmes d'intégrations dans mon logiciel. JE veux donc remplacer les 725 doublons par des numéro d'actif.
    - dans quelles circonstances exactes cela peut-il se produire ?
    - le remplacement est-il SYSTEMATIQUEMENT le même (ce qui donnerait à penser à des idarts différents dans un fichier et l'autre pour un même article)

    Ces informations précises seront probablement le fil conducteur de la stratégie à adopter
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  11. #11
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2017
    Messages
    529
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2017
    Messages : 529
    Points : 324
    Points
    324
    Par défaut
    Bonjour mercatog et unparia,


    Étant donné que ma colonne de format en question a un étiquette nom, je devrais alors transférer les résultat dans celle-ci au lieu de la supprimé (situation présenté par mercatog)


    j'essaie de voir comment faire le tout sans boucle mais je n'ai pas de lumière qui s'allume.


    Comment je vois présentement le code avec mon niveau de vba créer une colonne en suite faire une boucle pour chacune des lignes de format de mon fichier faire une recherchev afin de trouver si oui ou non il y a un équivalence, mettre le résultat dans a nouvelle colonne. SI la valeur de la nouvelle colonne diffère de #n/a alors on copie la valeur de la nouvelle colonne dans le format. A la toute fin, apres la boucle on supprime la colonne temporaire.

    Pour l'intervention de unparia,

    dans quelles circonstances exactes cela peut-il se produire ?
    Si on parle des doublons, il y a avait plusieurs personne qui pouvait créer des nouveaux formats et il y a un erreur de programmation de notre logiciel qui fait que certains filtre ne fonctionnais pas comme il le faut ... Cette situation est "semi" corrigé, on a restraint l'acces a la création de format a 2 personnes et les 2 personnes sont au courant des problèmes de filtre. Oui j'avoue que ce n'est pas a mon avis une vrai solution mais c'Est ce que l'on m'impose comme réalité.

    le remplacement est-il SYSTEMATIQUEMENT le même (ce qui donnerait à penser à des idarts différents dans un fichier et l'autre pour un même article)

    Si je comprends bien cette question, est-ce que par exemple la valeur 2179 va toujours etes converti vers la 1, la réponse est oui.



    merci beaucoup pour votre aide, c'Est apprécié les gars !!!

  12. #12
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonjour

    Supposons ta feuille à traiter s'appelle BD. Les codes à remplacer en colonne A

    Et dans la feuille Tmp tu as en A1:A725 les codes à remplacer et en B1:B725 les codes de remplacement


    30000 lignes traites en moins d'une seconde
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Remp()
     
    Application.ScreenUpdating = False
    With Worksheets("BD")
        .Columns(2).Insert
        .Range("B1").Value = .Range("A1").Value
        With .Range("B2").Resize(30000)
            .Formula = "=IFERROR(VLOOKUP($A2,Tmp!$A$1:$B$725,2,0),$A2)"
            .Value = .Value
        End With
        .Columns(1).Delete
    End With
    End Sub
    Petit bémol, la colonne A de la feuille BD ne doit pas être source de formules dans d'autres cellules.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  13. #13
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 249
    Points
    34 249
    Par défaut
    Bonjour,

    je vous propose un arrêt sur un array :

    https://didier-gonard.developpez.com...s-tableau-vba/

    À lire mur à mur pour bien voir qu'en principe tout est déjà très (très) bien indiqué
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  14. #14
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2017
    Messages
    529
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2017
    Messages : 529
    Points : 324
    Points
    324
    Par défaut
    Re-Salut,



    Donc avec la solution de mercatog, j'ai une fenêtre mettre à jour les valeurs désactiver qui s'ouvre et je dois choisir un fichier ... j'ai choisis monfichier ayant les désactiver et les bons et cela ne fonctionne pas.


    Si ma feuille de travail s'appelle Travaille, que la colonne ayant les formats a convertir s'il y a lieu est L, que ma feuille ayant les doublons et remplacement s'appelle Format à désactiver j'arrive à ceci


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub remp()
     
    'Application.ScreenUpdating = False
    With Worksheets("Travail")
        .Columns("l:l").Insert
        .Range("l2").value = .Range("m2").value
        With .Range("l2").Resize(30000)
            .Formula = "=IFERROR(VLOOKUP($A2,Format à désactiver!$A$2:$B$727,2,0),$A2)"
            .value = .value
        End With
        .Columns("l:l").Delete
    End With
    End Sub

    JE dois faire quelque chose de pas correct c'est sur ...



    JE vais lire ce que Jean-Philippe m'a envoyé comme lien

  15. #15
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Non, je parle du fait que la feuille se trouve sur le même classeur

    Pour la colonne L

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Remp()
     
    Application.ScreenUpdating = False
    With Worksheets("Travail")
        .Columns(13).Insert    'Insert colonne entre la colonne L et la colonne M
        .Range("M1").Value = .Range("L1").Value
        With .Range("M2").Resize(30000)
            .Formula = "=IFERROR(VLOOKUP($L2,'Format à désactiver'!$A$1:$B$725,2,0),$L2)"
            .Value = .Value
        End With
        .Columns(12).Delete    'Supprime l'ancienne colonne L
    End With
    End Sub
    Si les données sont dans un classeur externe, ça sera une autre manche.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  16. #16
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2017
    Messages
    529
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2017
    Messages : 529
    Points : 324
    Points
    324
    Par défaut
    Super, j'avais une faute de syntaxe dans la formule qui me faisait ouvrir la fenêtre. Surement que le nom n'était pas entre ' se qui est selon moi était la raison de l'apparission de la fenêtre


    Tous semble fonctionné et ce très très vite sans boucle.


    Petite question le resize est-ce le nombre de ligne que la formule est copié ???



    vraiment un gros merci !!!!


  17. #17
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2017
    Messages
    529
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2017
    Messages : 529
    Points : 324
    Points
    324
    Par défaut
    Le seul hic que j'ai présentement étant donné que je détruit l'ancienne colonne, je perds mon étiquette nom ... donc est-il préférable d'ajouté le nom à la colonne ou plutot transférer les valeurs dans l'autre colonne et détruire la nouvelle au lieu de l'Ancienne ???

  18. #18
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                .Range("M1").Value = .Range("L1").Value
    Cette ligne de code de transfert bien le nom! Non?


    J'ai même fais une macro pour ouvrir le fichier étranger contenant les codes à corriger

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Sub Remp()
    Dim Wbk As Workbook
    Dim Fichier
     
    Fichier = Application.GetOpenFilename()
    If Fichier <> False Then
        Set Wbk = Workbooks.Open(Fichier)
        If FeuilleExiste(Wbk, "Format à désactiver") Then
            Fichier = Mid(Fichier, InStrRev(Fichier, "\") + 1)
            Fichier = "'[" & Fichier & "]Format à désactiver'!A$1:B$725"
            Application.ScreenUpdating = False
            With ThisWorkbook.Worksheets("Travail")
                .Columns(13).Insert    'Insert colonne entre la colonne L et la colonne M
                .Range("M1").Value = .Range("L1").Value
                With .Range("M2").Resize(30000)
                    .Formula = "=IFERROR(VLOOKUP($L2," & Fichier & ",2,0),$L2)"
                    .Value = .Value
                End With
                .Columns(12).Delete    'Supprime l'ancienne colonne L
            End With
            MsgBox "Traitement terminé"
        Else
            MsgBox "Mauvais fichier..."
        End If
        Wbk.Close False
        Set Wbk = Nothing
    Else
        MsgBox "Opération annulée..."
    End If
    End Sub
     
     
    Private Function FeuilleExiste(ByVal Wbk As Workbook, ByVal Tmp As String) As Boolean
     
    On Error Resume Next
    FeuilleExiste = Wbk.Sheets(Tmp).Index
    End Function
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  19. #19
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2017
    Messages
    529
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2017
    Messages : 529
    Points : 324
    Points
    324
    Par défaut
    Bonjour mercatog



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sub Remp()
                .Range("M1").Value = .Range("L1").Value
    Cette ligne de code de transfert bien le nom! Non?
    Il transfert le titre de la colonne mais pas le nom (.name)



    JE ne sais pas si ceci est la version optimal



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub remp()
    'Application.ScreenUpdating = False
    With Worksheets("Travail")
        .Columns(13).Insert    'Insert colonne entre la colonne L et la colonne M
        .Range("M1").value = .Range("L1").value
        With .Range("M2").Resize(30000)
            .Formula = "=IFERROR(VLOOKUP($L2,'Format à désactiver'!$A$1:$B$725,2,0),$L2)"
            .value = .value
        End With
        .Columns(12).Delete    'Supprime l'ancienne colonne L
     
        .Columns(12).Name = "no_format_travail"
     
     
    End With
    End Sub
    En renommant ici la colonne avec le nom de l'ancienne, je ne sais pas si cela peut causé un erreur dans le gestionnaire de nom

  20. #20
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Citation Envoyé par jpvba Voir le message

    En renommant ici la colonne avec le nom de l'ancienne, je ne sais pas si cela peut causé un erreur dans le gestionnaire de nom
    Tu n'as qu'à tester

    Aucun problème
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. selectionner un range dans une feuille
    Par Mimosa777 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 11/06/2008, 17h00
  2. [VBA-EXCEL] selectionner un range en fonction d'une valeur
    Par cladsam dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/03/2007, 22h33
  3. Réponses: 2
    Dernier message: 28/08/2006, 11h17
  4. [VBA-E]transformer array en tableau type range
    Par matel dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/03/2006, 09h50
  5. [VBA-E] demande à l'utilisateur de sélectionner un range en VBA
    Par pascal123 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/01/2004, 12h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo