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 :

[VBA-excel] Affecter une date à la première cellule pleine


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Octobre 2006
    Messages : 47
    Points : 31
    Points
    31
    Par défaut [VBA-excel] Affecter une date à la première cellule pleine
    Bonjour,

    Explication/Exemple :

    Je suis à la ligne 10 colonne G, je cherche la première cellule pleine de cette ligne, j'arrive donc à la ligne 10 colonne Z. Arrivé là, je veux lire la date (situé à la ligne 5 de cette même colonne). Je veux copier cette date et la coller à la ligne 10 colonne B.

    Il peut y avoir 1000 lignes, l'objectif final est de faire un tri par date de la colonne B.


    Aidez moi s'il vous plait,

    merci



    ETAT D'AVANCEMENT : 100%

    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
    Sub datedébut()
     
    'lecture de la première cellule pleine d'une ligne
     
    Dim i, j As Variant
     
    For i = 15 To 1000
     
    For j = 7 To 255
     
      If Cells(i, j).Value <> "" Then Exit For
     
    Next j
     
    'Affecter la valeur X de la cellule Y à partir de la cellule Z
     
    datecherchee = Cells(8, j).Value    'cellule Z
    Cells(i, 5).Value = datecherchee    'cellule Y
     
    Next i
     
    End Sub

  2. #2
    Membre actif
    Avatar de repié
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    335
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 335
    Points : 281
    Points
    281
    Par défaut
    C'est pas très clair ta question

    tu veux pas montrer un peu ton code?

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Octobre 2006
    Messages : 47
    Points : 31
    Points
    31
    Par défaut
    C'est en cours mais j'ai du mal à commencer...

    Je le mets dès que ca ressemble à quelque chose

  4. #4
    Membre actif
    Avatar de repié
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    335
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 335
    Points : 281
    Points
    281
    Par défaut
    en fait ton objectif c'est de parcourir ta feuille (de long en large ou de haut en bas?)

    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim i as Integer
    i = 1
    Do
    i = i+1
    Loop Until thisWorkbook.sheets("MaFeuille").cells(i,1) <> ""

  5. #5
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Octobre 2006
    Messages : 47
    Points : 31
    Points
    31
    Par défaut
    Je parcours mon classeur de ligne en ligne, à chaque ligne, il y aura une date à affecter...

    Merci de ton aide en tout cas, je crois que je me complique la vie :p

  6. #6
    RLX
    RLX est déconnecté
    Membre du Club Avatar de RLX
    Inscrit en
    Octobre 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 51
    Points : 61
    Points
    61
    Par défaut
    Salut DVano,
    Si j'ai bien compris ce que tu veux faire je te conseille déjà de partir de la fin de ta liste de céllule sinon tu va parcourir toute la feuille excel et ça va te prendre du temps pour rien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set MaCellule = Range("A65536").End(xlUp)
    ensuite tu peux utiliser une boucle pour parcourir toute les cellules de ta feuille du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Compteur = MaCellule.Row
    For i = 0 To Compteur - 1
        If MaCellule.Offset(-i, 0).Value <> "" Then
            MaCellule.Offset(-i, 0).Value = Date
        End If
    Next i

  7. #7
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Octobre 2006
    Messages : 47
    Points : 31
    Points
    31
    Par défaut
    Bon, je vais éclaircir au maximum ma situation :

    Je travail sur un planning, j'ai donc un calendrier, des ressources et des taches affectées à ses ressources...

    Chaques lignes correspond à une tâches, cette tâche commence le XX/XX/XX, c'est la première cellule pleine (soit la date de début tâche) que je veux affecter dans une autre cellule...

    Voici l'avancement du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub datedébut()
     
    Dim i As Integer
    i = 15   'la cellule ou commence la lecture ?
    Do
    i = i + 1
    Loop Until ThisWorkbook.Sheets("MaFeuille").Cells(i, 7) <> ""
    ' 7 correspond à la colonne de début de lecture ?
     
     
     
    End Sub
    Je me rends compte que je suis vraiment débutant...

    Bon je vais potasser un peu (voir beaucoup) je ferai un état d'avancement...

  8. #8
    Membre actif
    Avatar de repié
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    335
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 335
    Points : 281
    Points
    281
    Par défaut
    Un petit conseil

    je sais pas si tu connait ca mais si tu veux connaitre le mieux les objet et les méthode de Excel, il existe un enregistreur de macro qui te génere le code de l'action qui tu effectue.

    Tu le trouveras dans la barre d'outils Visual Basic (le bouton enregistrer)

    Ne te fie pas trop au code généré (qui est tres vite lourd) mais regarde bien les objets et les propriétés utilisées, beaucoup de choses peuvent devenir plus clairs et comment on les utilise.

  9. #9
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Si tu veux un peu d'exemples de l'utilisations des objets en Excel, regarde dans cette discussion, le message 11.
    Tu devrais y trouver un peu d'info sur le parcours de cellules de 2 manières différentes, par index et par parcours de Range.

  10. #10
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Octobre 2006
    Messages : 47
    Points : 31
    Points
    31
    Par défaut
    Merci pour les infos :p

    3615 ma life :
    Je viens de reprendre un lourd programme VBA (plus de 35 pages une fois remit sur papier)... Je travail sur ce programme depuis un mois et ca fait donc un mois que je manipule VBA. J'ai aussi achetez un bouquin histoire d'apprendre les bases et plus... J'ai déjà résolu beaucoup de problème, ajouter/modifier des actions mais quand il s'agit de partir de zéro, je galère. C'set clairement les bases qui m'empeche d'avancer. (dans mon bouquin, j'en suis qu'a la page 15 :p ) Ca ira mieux quand je l'aurai fini

  11. #11
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Octobre 2006
    Messages : 47
    Points : 31
    Points
    31
    Par défaut
    J'ai du nouveau mais pas trop de temps :p

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub AA() 
    'Sélection de la première cellule pleine de la ligne 1
    [A1].End(2).Select 
    End Sub
    Voici comment selectionner la première cellule pleine d'une ligne...

    Ca avance

  12. #12
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Octobre 2006
    Messages : 47
    Points : 31
    Points
    31
    Par défaut
    Bon, voilà ou j'en suis...

    Je cherche la première cellule pleine d'une ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub datedébut()
     
    For i = 15 To 1000
     
    'Sélection de la première cellule pleine de la ligne 1
    Cells(i, 7).End(2).Select
    Ca, c'est bon. Ensuite, je récupère l'adresse de la colonne :

    Déjà là, quand je lance la macro j'ai un probléme à ce niveau là,

    -> Utilisation incorrect de la propriété

    Mais bon, c'est peut être parce qu'il y a pas de code derrière...

    Je souhaiterai ensuite copier la valeur de la cellule d'on voici les coordonnées :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Thisworkbook.Cells(i, valeur récupérer précedemment).copy
    Le problème est là, je ne sais pas donné la valeur de la colonne, peut être faut il la mettre dans une variable mais je ne sais pas comment faire...

    Si vous avez réussi à me suivre et que vous avez la solution, merci à vous

  13. #13
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 298
    Points
    4 298
    Par défaut
    Sinon, une autre solution pour trouver la ligne ou il y a quelquechose : tu fais une boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    i = 1
    while cells(i,7).value = ""
        i = i + 1
    Wend
    Le 'i' représente alors la ligne ou tu as une donnée


    Par contre je comprend pas pourquoi tu veux récupérer l'adresse de la colonne, alors que tu cherche la première ligne pleine

  14. #14
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Octobre 2006
    Messages : 47
    Points : 31
    Points
    31
    Par défaut
    Explication/Exemple :

    Je suis à la ligne 10 colonne G, je cherche la première cellule pleine de cette ligne, j'arrive donc à la ligne 10 colonne Z. Arrivé là, je veux lire la date (situé à la ligne 5 de cette même colonne). Je veux copier cette date et la coller à la ligne 10 colonne B.

    Il peut y avoir 1000 lignes, l'objectif final est de faire un tri par date de la colonne B.

    J'espère avoir été clair

  15. #15
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 298
    Points
    4 298
    Par défaut
    Ayéééééééé j'ai comprendu donc me suis trompé dans mon code lol. C'est plutot comme ça qu'il faut l'écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    j = 1
    while cells(10,j).value = ""
        j = j + 1
    Wend
    'le j obtenu correspond a la colonne cherchee
    datecherchee = cells(5,j).value
    cells(10,2).value = datecherchee
    Un truc dans ce genre la je pense marche
    Après il faut peut-être que tu mette en forme les dates en utilisant des DateValue et autre, mais je te donne surtout l'idée principale

  16. #16
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Octobre 2006
    Messages : 47
    Points : 31
    Points
    31
    Par défaut
    Bon, y a un net progrès

    merci

    Voici le code :

    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
    Sub datedébut()
     
    Dim i, j As Variant
     
    For i = 15 To 1000
    j = 7
     
    While Cells(i, j).Value = ""
     
     j = j + 1
    Wend
    'le j obtenu correspond a la colonne cherchee
    datecherchee = Cells(8, j).Value
    Cells(i, 5).Value = datecherchee
     
     
    Next i
     
    End Sub
    Seulement voilà, j'ai une erreur ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    While Cells(i, j).Value = ""
    avec j = 257 erreur logique puisqu'il y a que 256 colonnes... Ou dois je mettre un "For j = 7 to 256" ?

    J'ai essayé de le placé dans le while et dehors et ca marche pô (j'ai pas oublié le next j )

  17. #17
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 298
    Points
    4 298
    Par défaut
    Ah oui effectivement j'ai oublié de soulever le cas ou ta ligne était vide, car c'est pour ça que arrivé a 256 il bloqué, puisque ta ligne est vide

    DOnc oui soit tu fais un for tout bete avec un Exit for :

    au lieu de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    While Cells(i, j).Value = ""
     
     j = j + 1
    Wend
    tu écris un truc de ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for j = 1 to 255
      if cells(i,j).value <> "" then exit for
    next j
    Normalement ça devrait marcher tout aussi bien

    Bon week end, moi je m'en vais

  18. #18
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Octobre 2006
    Messages : 47
    Points : 31
    Points
    31
    Par défaut
    Merci, je vais testé ca, bon week

    Et merci encore

  19. #19
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Octobre 2006
    Messages : 47
    Points : 31
    Points
    31
    Par défaut
    Problème résolu...

    Merci à illight

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Trier une plage de cellules
    Par Squelet dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 03/12/2019, 13h04
  2. [VBA-EXCEL] format de date lors d'écriture dans une cellule
    Par ustilago dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/02/2007, 17h44
  3. [VBA-Excel]Supprimer une colonne entiere basee sur une cellule
    Par Tartenpion dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/10/2006, 22h08
  4. [VBA-Excel] affecter la valeur infinie à une variable
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 13/09/2006, 21h37
  5. [VBA Excel] convertir une date francaise au format anglais
    Par loacast dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/12/2005, 16h52

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