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 :

[débutant] VBA XL : déplacement curseur dans tableau


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 14
    Par défaut [débutant] VBA XL : déplacement curseur dans tableau
    bonjour bonjour

    j'ai un tableau de cette forme, à 2 colonnes :

    cellule plage_vide
    ligne_vide
    plage_vide texte
    plage_vide texte
    plage_vide texte

    - ici dans mon exemple on a la ligne "cellule" puis 3 lignes à traiter "plage_vide" mais le tableau complet comprend des centaines de fois cette configuration avec des nombres de lignes à traiter qui changent (donc pas toujours 3 comme ici)
    - je veux copier la "cellule" dans les "plages_vides" en face du texte avec une
    petite macro (en boucle évidemment)

    quand j'enregistre la macro et que je l'exécute, ça foire + il y a des
    instructions que je ne comprends pas... ma macro :

    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
         Selection.Copy <<< JE SUIS POSITIONNE SUR LA 1E CELLULE ET JE LA COPIE
        ActiveCell.Offset(0, 1).Range("A1").Select <<< JE ME DEPLACE VERS LA 
    DROITE MAIS CE A1 DANS LA MACRO M'ENERVE
        Selection.End(xlDown).Select <<< JE SAUTE DANS LA 2E COL. SUR LA 1E LIGNE
        Range(Selection, Selection.End(xlDown)).Select <<< J'IDENTIFIE LE NB DE 
    LIGNE CONCERNEES
        Range(Selection, Selection.End(xlToLeft)).Select <<< JE ME DEPLACE A 
    GAUCHE TOUT EN MAINTENANT LA SELECTION
        ActiveCell.Offset(0, -1).Range("A1:A5").Select <<< L'ENDROIT OU JE VAIS 
    COPIER MA FORMULE; LE A1:A5 M'ENERVE PUISQUE LA GRANDEUR DE LA ZONE VA ETRE 
    CHANGEANTE ; LA MACRO SE BLOQUE DE TOUTE FACON ICI
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, 
    SkipBlanks _
            :=False, Transpose:=False <<< COPIER LA CELLULE
    >>> ENSUITE J'AI DES LIGNES DE DEPLACEMENT DANS LE TABLEAU QUI 1) SUPPRIME LA LIGNE CELLULE ET SE POSITIONNE SUR LA SUIVANTE
        ActiveCell.Select
        Application.CutCopyMode = False
        Selection.End(xlUp).Select
        ActiveCell.Range("A1:F1").Select
        Selection.ClearContents
        ActiveCell.Select
        Selection.End(xlDown).Select
        Selection.End(xlDown).Select
        Selection.End(xlDown).Select
    je pige rien, à l'aide HELP, j'ai cherché pas trouvé... ai pas trouvé comment se débarasser de ces A1:A5 qui sont variables chez moi !

    merci d'avance

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    ne pourrai tu pas faire une copie d'écran de ta feuille .. histoire de mieux visualiser ton probléme..?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 14
    Par défaut voilà

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 14
    Par défaut alors
    la cellule marquée = formule que je vais copier-coller entre 1293 et 1297 dans la 1e colonne

    MAIS pour le bloc suivant, on voit bien que le nombre de ligne, 1302 à 1311, n'est pas le même, et ainsi de suite dans le reste du tableau

    j'utilise la 2e colonne pour identifier le nombre de lignes concernées

  5. #5
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    et ce fichier ... c'est quoi .. la sortie d'une commande "dos" dir.... , quel est le but final ? obtenir une liste de fichiers...tailles/dates...

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 14
    Par défaut dans le dos
    il s'agit effectivement du résultat d'un
    >dir /s >fichier.txt
    dans le dos que je veux traiter

    le but de la question est
    - comment identifier le nombre de ligne de chaque bloc?

  7. #7
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    juste une derniére question...n'est-t'il pas possible de créer cette liste de fichier directement par une procdure excel... ( dir aussi existe..?) .

    Peu-être une boucle while...
    .., en considérant que le premier bloc débute en A1..

    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 traiteBloc()
      Dim r As Range 'Cellule initiale..
      Dim rPlage As Range 'Plage traitée..
      Dim i As Integer
      Set r = range("A1") 'Memorise Cellule init..(A1..)
    While r <> ""
      'Pour définir la plage à traiter.. on ce déplace de 2 lignes vers le bas
      '1 colone vers la droite.. puis on prends toutes les cellules "adjacentes non vides.."
      ' CurrentRegion correspond à la sélection obtenu par un CTRL * dans excel
      Set rPlage = r.Offset(2, 1).CurrentRegion
      For i = 1 To rPlage.Rows.Count
        rPlage.Cells(i, 1).EntireRow.Columns(1) = r 'Colle à valeur cellule initiale à gauche..
      Next
      'Se positionne sur Zone suivante..
      Set r = rPlage.Cells(i, 1).Offset(0, -1).End(xlDown)
    Wend
     
    End Sub

  8. #8
    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 : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Citation Envoyé par bbil
    juste une derniére question...n'est-t'il pas possible de créer cette liste de fichier directement par une procdure excel... ( dir aussi existe..?) .
    akka01, tu n'as pas répondu à la question de bbil.
    Il serait nettement plus simple d'extraire ta liste directement depuis Excel que de passer par le dir du DOS.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 14
    Par défaut euh
    merci pour l'aide
    mais
    il ne se passe rien sur mon écran quand je procède au test de la macro pas à pas...

    et la macro se bloque avec la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set r = rPlage.Cells(i, 1).Offset(0, -1).End(xlDown)
    quid?

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 14
    Par défaut euh
    possible... mais comment?!

Discussions similaires

  1. [VBA] Déplacer le curseur dans internet explorer
    Par borzun dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 24/07/2014, 10h30
  2. [VBA] Récupération de données dans tableau recapitulatif
    Par n0vocaine dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/05/2010, 07h41
  3. [VBA-E] Colonne total dans tableau croisé dynamique
    Par hiline6 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/01/2007, 18h24
  4. [VBA-E]Afficher tout dans un tableau dynamique croisé
    Par alex_95 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/03/2006, 13h09
  5. Réponses: 10
    Dernier message: 19/01/2006, 06h41

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