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 :

Remonté les donnée du dessou


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé Avatar de jawed
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2004
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2004
    Messages : 506
    Par défaut Remonté les donnée du dessou
    a tous et toutes
    je ne sait si j'ai bien cherché sur le forum mai je ne trouve ce que je veut
    j'ai un fichier texte que veut l'exploité dans excel le probleme et que pour chaque client il a deux ligne exp:
    122523 43202122 BRAD Pit 101
    01 rue de la paix

    la premiere ligne et dans la cellule A1
    la deuxieme est dans la cellule A2
    pour avoir une converssion propre du fichier je voudrai si c'est possible avoir l'adresse du client dans la cellule B1 puis suprimé completement la ligne A2
    Merci et a tres bientot

  2. #2
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    D'après une macro enregistrée et légèrement modifiée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Range("A2").Cut Destination:=Range("B1")

  3. #3
    Membre éclairé Avatar de jawed
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2004
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2004
    Messages : 506
    Par défaut
    Slaut zazaraignée
    j'ai utilisé ton code il marche et je ton remerci mais le probleme est qu'il transfert que la ligne A2 vers la ligne B1 mais les client qui sont en dessous reste sans changement ainsi la ligne A2 reste vide et elle n'est pas suprimer
    merci pour ton aide
    cordialement

  4. #4
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Mais il faut faire une boucle... J'ai juste donné une piste.

  5. #5
    Membre éclairé Avatar de jawed
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2004
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2004
    Messages : 506
    Par défaut
    le probleme est que je suis un néophite en VBA
    Désolé

  6. #6
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    C'est pas parfait (ça clignotte un peu), mais ça marche
    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 ReplacerDonnees()
        ' variables
        Dim plage As Range, fin As Range, c As Range
        Dim i As Integer, j As Integer
        ' initialisation des variables
        Set plage = Range(Range("A1"), Range("A1").End(xlDown))
        Set fin = Range("A1").End(xlDown)
        j = 2
        ' déplacer les données en B
        For i = 1 To fin.Row Step 2
            Range("A" & j).Cut Destination:=Range("B" & i)
            j = j + 2
        Next
        ' supprimer les lignes
        For Each c In plage
            If IsEmpty(c) Then
                c.EntireRow.Delete
            End If
        Next
        Set plage = Nothing
        Set fin = Nothing
    End Sub

  7. #7
    Membre éclairé Avatar de jawed
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2004
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2004
    Messages : 506
    Par défaut
    et moi je dit bravo zazaraignée
    a bientot

  8. #8
    Membre éclairé Avatar de jawed
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2004
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2004
    Messages : 506
    Par défaut

    désolé j'ai tagué trop vite car il me reste un petit probleme a resoudre, entre chaque client il y a une ligne vide et lorsque j'éxécute votre code il me remonte que le premier client exemple:
    comme ca ton code marche a merveil:
    122523 43202122 BRAD Pit 101
    01 rue de la paix
    122523 43202122 BRAD Pit 101
    01 rue de la paix

    mais comme ca il ne marche pas
    122523 43202122 BRAD Pit 101
    01 rue de la paix

    122523 43202122 BRAD Pit 101
    01 rue de la paix

    encors merci pour votre patience
    a bientot

  9. #9
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Bon ben alors plutot que de faire des incréments de 2, il faut les faire de 3.

  10. #10
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Ho! et puis, non, attends, le xlDown ne marchera pas s'il y a des lignes blanches... C'est la galère ton truc!

    Tu disais que tes données viennent d'un fichier texte. Je crois que ce serait plus simple de lire le fichier ligne par ligne et de placer les données selon le contenu de la ligne lue.

  11. #11
    Membre éclairé Avatar de jawed
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2004
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2004
    Messages : 506
    Par défaut
    salut
    Citation Envoyé par zazaraignée
    Ho! et puis, non, attends, le xlDown ne marchera pas s'il y a des lignes blanches... C'est la galère ton truc
    t'a raison c'est ce je voulais dir, c'est vrai mes données viennent d'un fichier texte et je suis tout oui pour suivre tes instruction mais n'oubli pas que je suis néophite en VBA
    cordialement

  12. #12
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Ça fait plus d'une heure que je réponds à des questions sur le forum VBA Word. Et je me rends compte que le temps passe. Je n'ai plus trop le temps aujourd'hui. Mais en attendant, regarde dans l'aide pour la lecture de fichiers avec l'instruction Open "CheminCompletDuFichier" For Input As #numérodefichier.

    Je t'en reparle d'ici demain.

  13. #13
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Je viens de faire ça entre deux tâches ménagères. La programmation VB (ou VBA), c'est drôlement plus intéressant que de pousser une serpillère (un p'tit dégat que je viens de ramasser juste avant, pouah!).

    Mais avant, tu dois ajouter une référence dans ton projet. Dans l'éditeur VBA, menu Outils, Référence...
    • Cliques sur le bouton Parcourir.
    • Dans la liste des Types de fichiers, sélectionne 'Contrôles ActiveX(*.ocx)'
    • Repère le fichier "COMDLG32.OCX" dans le dossier "C:\Windows\System32" et sélectionne le, puis cliques sur Ouvrir
    • Un composant devrait s'être ajouté à la liste. Le 'Mocrosoft Common Dialog Control 6.0'
    • Cliques sur Ok pour valider


    Puis tu ajoute le code suivant (tu peux modifier le nom de la macro, mais faut pas oublier de l'appeler par le bon nom par la suite).

    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 LireFichier()
        Dim dlg As CommonDialog
        Dim fNum As Integer
        Dim strLigne As String
        Dim c As Integer 'compteur de colonne
        Dim r As Integer 'compteur de ligne
     
        ' ouvre une boîte de dialogue pour choisir le fichier texte
        Set dlg = New CommonDialog
        With dlg
            .DialogTitle = "Ouvir"
            .Filter = "Fichiers texte (.txt)|*.txt"
            .InitDir = ActiveWorkbook.Path
            .ShowOpen
            If .Filename <> "" Then
                c = 0
                r = 1
                fNum = FreeFile
                Open .Filename For Input As #fNum
                Do While Not EOF(fNum)
                    Input #fNum, strLigne
                    If strLigne <> "" Then
                        c = c + 1
                        Cells(r, c) = strLigne
                      Else
                        c = 0
                        r = r + 1
                    End If
                Loop
                Close #fNum
            End If
        End With
        Set dlg = Nothing
     
        ' Ajuste les largeurs de colonnes
        Columns("A:B").EntireColumn.AutoFit
    End Sub
    Si tu n'as pas le composant Wiindows Common Dialog, tu dis.

  14. #14
    Membre éclairé Avatar de jawed
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2004
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2004
    Messages : 506
    Par défaut
    Citation Envoyé par zazaraignée
    Mais en attendant, regarde dans l'aide pour la lecture de fichiers avec l'instruction Open "CheminCompletDuFichier" For Input As #numérodefichier
    je vais voir merci et a bientot

  15. #15
    Membre éclairé Avatar de jawed
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2004
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2004
    Messages : 506
    Par défaut
    salut zazaraignée et bon courage pour tes taches
    pour ce qui concerne le fichier COMDLG32.OCX je ne l'ai pas
    a bientot

  16. #16
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Bon alors je vais voir s'il y a moyen d'intercepter la boîte de dialogue ouvrir de Excel. Il me semble que Ouskel'n'or avait déjà répondu à quelques sujets traitant de cette possibilité. Faudrait chercher sur le forum en attendant.

  17. #17
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Ha! vraiment! Je suis fière de moi!

    J'ai trouvé pour toi (et aussi pour moi, car ça va servir!) le FileDialog. Merveille des merveilles! Pas besoin d'ajouter de références.
    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
    38
    39
    40
    41
     
    Sub LireFichier()
        Dim dlg As FileDialog
        Dim nomFichier As String    ' variant si AllowMultiSelect = True
        Dim fNum As Integer
        Dim strLigne As String
        Dim c As Integer 'compteur de colonne
        Dim r As Integer 'compteur de ligne
     
        ' ouvre une boîte de dialogue pour choisir le fichier texte
        Set dlg = Application.FileDialog(msoFileDialogFilePicker)
        With dlg
            .Title = "Ouvir"
            .Filters.Clear
            .Filters.Add "Fichier texte(.txt)", "*.txt"
            .InitialFileName = ActiveWorkbook.Path
            .AllowMultiSelect = False
            If .Show = -1 Then
                c = 0
                r = 1
                fNum = FreeFile
                nomFichier = .SelectedItems(1)
                Open nomFichier For Input As #fNum
                Do While Not EOF(fNum)
                    Input #fNum, strLigne
                    If strLigne <> "" Then
                        c = c + 1
                        Cells(r, c) = strLigne
                      Else
                        c = 0
                        r = r + 1
                    End If
                Loop
                Close #fNum
            End If
        End With
        Set dlg = Nothing
     
        ' Ajuste les largeurs de colonnes
        Columns("A:B").EntireColumn.AutoFit
    End Sub
    Si tu as besoin que la boîte de dialogue affiche d'autres types de fichiers, tu n'as qu'à ajouter une commande .Filters.Add sous celle qui existe déjà

  18. #18
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Par défaut
    C'est bien tout ca; Mais si le problème c'est les lignes vides, pourquoi ne pas les supprimer d'abord http://www.developpez.net/forums/sho...d.php?t=334833 et ensuite utiliser le code (zazaraignée) qui marche? (donc rien à faire avec les fichiers sources.)

  19. #19
    Membre éclairé Avatar de jawed
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2004
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2004
    Messages : 506
    Par défaut
    vraiment travail de pro
    merci baucoup et a bientot
    Nb:j'ai un autre post si tu veut jeté un coup d'oeuil
    cordialement

  20. #20
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Citation Envoyé par DMboup
    C'est bien tout ca; Mais si le problème c'est les lignes vides, pourquoi ne pas les supprimer d'abord http://www.developpez.net/forums/sho...d.php?t=334833 et ensuite utiliser le code (zazaraignée) qui marche? (donc rien à faire avec les fichiers sources.)

    Parce que de toutes façons, lire le fichier directement est bien plus rapide!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/12/2010, 22h31
  2. Réponses: 5
    Dernier message: 16/07/2007, 11h14
  3. Faire "remonter" les données dans des requetes imbriquées
    Par Earthwormjim dans le forum Requêtes
    Réponses: 5
    Dernier message: 30/08/2006, 18h37
  4. [C#] Je n'arrive pas à remonter les données
    Par Le Basque dans le forum Windows Forms
    Réponses: 14
    Dernier message: 17/01/2005, 20h40
  5. trier les données dans le cache ??
    Par psyco2604 dans le forum XSL/XSLT/XPATH
    Réponses: 31
    Dernier message: 10/06/2003, 11h03

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