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 :

Probléme avec la fonction paste! [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Apprentie en programmation
    Inscrit en
    Octobre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Apprentie en programmation

    Informations forums :
    Inscription : Octobre 2014
    Messages : 7
    Par défaut Probléme avec la fonction paste!
    Bonjour a vous et merci de prendre du temps pour me lire.

    Voila je désire réaliser un programme qui remonte les informations de deux colonnes en les remontant une a unes de telle sorte qu'il n'y est plus de cellules vides entre les informations (les cellules en question ne dont pas vide, en réalité elle contienne un espace.)
    Je suis parvenu a coder se programme et a l'exécuter avec succès dans un dossier excel vide de toutes autres macros:

    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
    42
    43
    44
    45
     
    Sub SupprimeCelluleVide()
     
    'Vide les cellules comprenant uniquement un espace de la colonne
     
    Range("F1").Select 'selectionne la 1er case de la colonne ou on veux effectuer la supression d'espace
    i = 0
     
    While i <> 5
     
        If ActiveCell.Value = " " Then
            i = 0
            Selection.ClearContents
            ActiveCell.Offset(rowOffset:=1, columnOffset:=0).Activate
        Else
            ActiveCell.Offset(rowOffset:=1, columnOffset:=0).Activate
            i = i + 1
     
        End If
    Wend
     
    'Remonte les valeur une a une pour ne plus avoir de trous dans la colonne
     
    i = 1
     
    While LigneOrigine <> 1048576 'cf parenthése ci dessous
        'selectionne la 1er cases non vide (sauf le titre)(retourne 1048576 si pas d'élément trouver)
        LigneOrigine = Range("F1").Offset(LigneCible, 0).End(xlDown).Row
        'MsgBox "LigneOrigine= " & LigneOrigine
        'selectionne la 1er case vide (sauf le titre)(idem pour avoir le numéro de ligne)
        LigneCible = Range("F1").Offset(i, 0).End(xlUp).Offset(1, 0).Row
        'MsgBox "LigneCible= " & LigneCible
        i = i + 1
    'Couper coller
        Range("F1").Offset(LigneCible - 1, 0).Select
        Range("F1:G1").Offset(LigneOrigine - 1, 0).Select
        Application.CutCopyMode = False
        Selection.Cut
        Range("F1").Select
        Range("F1").Offset(LigneCible - 1, 0).Select
        ActiveSheet.Paste
     
    Wend
     
    End Sub
    Mon programme principale ouvre un dossier excel en ".SCV" remonte les informations des colonnes F et G, puis copie toutes les donnés de la feuille ouverte et les colle dans la feuille contenant ma macro.
    La partie bugé est donc la partie du programme précédant qui au lieux de couper/coller mes donner de la colonne F&G a cette même colonne il me les colle dans la cellule A1 du classeur contenant mon programme principale.

    Pour une plus grande compréhension du dis programme je vous encourage a télécharger les 2 pièces jointent. Regarder en pas a pas ce qu'il se passe dans le programme ThisWorkbhook du fichier "test copie" en ouvrant suite a la demande de la macro le fichier "30101425" et bien sure me retourner une solution si vous parvenez a trouver le bug.

    Merci de votre attention et désolé pour les fautes d'orthographe que j'ai dut laisser trainer malgré moi dans se message.

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,

    Déjà je transformerais ta première partie ainsi (explications dans 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
    Option Explicit 'ne pas oublier
     
     
    Sub SupprimeCelluleVide()
    ' declarer déjà ses variables
    Dim x As Long
    Dim Dl As Range
    'exemple pour colonne F
    With Sheets("Feuil1") 'Feuil1 à changer par le nom de ta feuille
      Set Dl = .Range("F" & .Rows.Count).End(xlUp) 'on va déjà chercher la derniere cellule non vide
      'ci-dessous, on cherche les cellules contenant uniquement " " et on les supprime
      For x = Dl.Row To 1 Step -1'en commençant par la fin pour éviter les erreurs
        If .Range("F" & x) = " " Then .Range("F" & x).Delete Shift:=xlUp
       'ou si tu supprimes les cellules vides aussi
        If .Range("F" & x) = " " Or .Range("F" & x) = "" Then .Range("F" & x).Delete Shift:=xlUp
      Next x
    End With
    End Sub
    quand tu auras compris, sois explicite pour le reste
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre régulier
    Homme Profil pro
    Apprentie en programmation
    Inscrit en
    Octobre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Apprentie en programmation

    Informations forums :
    Inscription : Octobre 2014
    Messages : 7
    Par défaut
    Merci de la réponse, le programme fonctionne très bien est résout mon problème (en le contournant ).
    Néanmoins peut tu stp m'indiquer l'utilité de la première ligne de ton code:
    Merci encore.

  4. #4
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,

    il faudrait que tu cherches un peu, c'est une notion de base qui si elle n'est pas spécifiée, permet d'utiliser n'importe quelle variable avec un grand risque d'erreur, il faut donc la provoquer en haut de tous les modules (voir l'aide) et cela t'obligera à déclarer toutes tes variables (dim as string, as Long, as integer...., public as ....) voir aussi les déclarations de variables...

    Bonne journée et mouilles-toi un peu

    Edit : Penses à cliquer sur si tel est le cas
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Membre régulier
    Homme Profil pro
    Apprentie en programmation
    Inscrit en
    Octobre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Apprentie en programmation

    Informations forums :
    Inscription : Octobre 2014
    Messages : 7
    Par défaut
    Okey merci casefayere.
    Bonne journée.

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

Discussions similaires

  1. Problème avec la fonction paste
    Par Salamandar dans le forum R
    Réponses: 2
    Dernier message: 19/02/2010, 12h41
  2. Problème avec la fonction findfirst ()
    Par Angelico dans le forum Windows
    Réponses: 3
    Dernier message: 05/08/2004, 20h40
  3. [Requete SQL en VBA] Problème avec la fonction FLOOR
    Par zubral dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/07/2004, 13h24
  4. Problème avec les fonctions
    Par jvachez dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/01/2004, 12h06
  5. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04

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