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 :

Appliquer Fonction Concatener et Fonction No.Semaine avec VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 32
    Par défaut Appliquer Fonction Concatener et Fonction No.Semaine avec VBA
    Bonjour,

    J'ai besoin d'aide afin d'appliquer 2 formules sur 2 colonnes avec VBA.
    Dans un premier temps, je veux que la colonne L me renvoie le numéro de la semaine correspondant à la date saisie dans la colonne H.
    Egalement, je veux que la colonne M applique la fonction Concatener(colonne D; ColonneE).

    Merci pour votre aide.

  2. #2
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 37
    Par défaut soyez plus précis !
    Bonjour ti_mouton,

    - pour le numéro de semaine, est-ce pour 1 cellule, une zone de cellules ou pour la colonne entière ?
    - pour la concaténation, est-ce bien une concaténation (texte) ou une somme (nombres) ?
    Doit-elle s'applique uniquement à une cellule ou bien à toute la colonne ?
    Si c'est sur toute la colonne, merci de préciser si la zone de données est continue ou discontinue, et si les 2 colonnes ont le même nombre de données.

    Cdlt

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 32
    Par défaut
    Bonjour,

    Dans les 2 cas je veux que la fonction s'applique pour toute la colonne à partir de la Ligne 2.
    Pour la concatenation il s'agit bien d'une concaténation de texte, la zone de données est continue et les colonnes ont le même nombre données.

    Pour le No.Semaine, j'ai essayé ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub NoSemaine()
        Range("L2:L").Value = Application.WorksheetFunction.WeekNum(Range("H2:H"), 2)
    End Sub
    mais ca ne fonctionne pas.

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    un exemple commenté
    adapter le nom de la feuille

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Tableau()
    Dim Tablo
    Tablo = Worksheets("Feuil1").UsedRange ' chargement des données dans un tableau
    For i = LBound(Tablo, 1) To UBound(Tablo, 1) 'boucle sur chaque ligne du tableau
        Tablo(i, 12) = Application.WorksheetFunction.WeekNum(Tablo(i, 8)) 'numéro de semaine de la date en H en L
        Tablo(i, 13) = Tablo(i, 4) & Tablo(i, 5) 'concaténation de D et E dans M
    Next i
    Worksheets("Feuil1").UsedRange.Value = Tablo ' restitution des données sur la plage
    End Sub

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 32
    Par défaut
    Bonjour Joe,

    Merci pour votre réponse. Malheureusement je viens d'essayer votre code mais j'ai un message d'erreur qui s'affiche : Impossible de lire la propriété WeekNum... ?

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    je n'arrive pas à reproduire le problème

    quel est le code tel que tu l'as utilisé ? Si tu as modifié quelque chose, tu peux me montrer à quoi ressemble ton code maintenant ?

    j'ai essayé :

    - avec une date dans la colonne H : OK
    - avec une cellule vide dans la colonne H : OK, ça met un numéro de semaine "0"
    - avec une chaine de caractère dans la colonne H : j'ai une erreur (ce qui est normal), mais c'est pas celle dont tu me parles


    on est d'accord que ta colonne H ne contient QUE des dates ?
    est-il possible de consulter le fichier, ou une simple copie épurée où le problème se produit quand même ?

  7. #7
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 37
    Par défaut
    Dans le même esprit que joe.levrai, voici 2 procédures séparées qui travaillent sur l'onglet actif (sinon remplacer with activesheet par with sheets("nomdelafeuille") ) :
    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
    Sub Concaténer(ByVal ColSource1$, ByVal ColSource2$, ByVal ColDestination$)
    Dim NbreLignes As Double, I As Double
    Dim NbreLignes_ColSource1 As Double, NbreLignes_ColSource2 As Double
    Dim TabloS1, TabloS2, TabloD()
    Const NoLigne1 As Integer = 2
    With ActiveSheet
        TabloS1 = .Range(.Range(ColSource1 & NoLigne1), .Range(ColSource1 & NoLigne1).End(xlDown))
        TabloS2 = .Range(.Range(ColSource2 & NoLigne1), .Range(ColSource2 & NoLigne1).End(xlDown))
        NbreLignes_ColSource1 = UBound(TabloS1)
        NbreLignes_ColSource2 = UBound(TabloS2)
        NbreLignes = WorksheetFunction.Min(NbreLignes_ColSource1, NbreLignes_ColSource2)
        ReDim TabloD(1 To NbreLignes, 1 To 1)
        For I = 1 To NbreLignes
            TabloD(I, 1) = TabloS1(I, 1) & TabloS2(I, 1)
        Next I
        .Range(ColDestination & NoLigne1).Resize(NbreLignes) = TabloD
    End With
    End Sub
     
    Sub NoSemaine(ByVal ColSource$, ByVal ColDestination$)
    Dim NbreLignes As Double, I As Double
    Dim TabloS, TabloD()
    Const NoLigne1 As Integer = 1
    With ActiveSheet
        TabloS = .Range(.Range(ColSource & NoLigne1), .Range(ColSource & NoLigne1).End(xlDown))
        NbreLignes = UBound(TabloS)
        ReDim TabloD(1 To NbreLignes, 1 To 1)
        For I = 1 To NbreLignes
            TabloD(I, 1) = Format(TabloS(I, 1), "ww", vbMonday, vbFirstFourDays)
        Next I
        .Range(ColDestination & NoLigne1).Resize(NbreLignes) = TabloD
    End With
    End Sub
    Exemple : Concaténer "D","E","M"
    et NoSemaine "L","H"

    En espérant que cela vous convienne.

    Cdlt

Discussions similaires

  1. probleme avec fonction concatenation de tableaux
    Par Septembre84 dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 17/04/2008, 14h27
  2. Réponses: 4
    Dernier message: 18/01/2006, 10h33
  3. Réponses: 10
    Dernier message: 09/01/2006, 18h39
  4. Réponses: 8
    Dernier message: 09/01/2006, 16h58
  5. Obtenir des dates en fonction du n° de la semaine
    Par coeur74 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 10/02/2005, 13h42

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