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éclaration de variables VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Par défaut déclaration de variables VBA
    Bonjour, j'ai besoin d'aide pour transférer des lignes d'un tableau A vers un tableau B. Le tableau A a en colonne A "N° Ligne" qui fait référence à la colonne A "N° Ligne" du tableau B. Le tableau A a toutes ses lignes complétées de 1 à 65536, tandis que le tableau B n'a que des lignes qu'on modifie et qu'ensuite on transfère pour les coller et remplacer les lignes correspondantes au tableau A.
    Pouvez vous m'aider s'il vous plait ?
    Merci

  2. #2
    Membre expérimenté
    Inscrit en
    Février 2008
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 208
    Par défaut
    Bonjour

    Comment fais-tu pour identifier les lignes identiques entre tableau A et tableau B ?
    Est-ce un inicateur numérique ou du texte ?
    Combien de colonnes à copier pour chaque ligne ?

    à plus

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Par défaut
    Les 2 tableaux ont 21 colonnes de A à U. La colonne A s'intitule "N°Ligne". Je pensais déclarer en variable NLigneT2 et NLigneT1 avec VarNLigneT2=VarNligneT1, mais je m'emmele les pinceaux. En fait dans ma 1ere macro les lignes du T1 sont affectées à un Commercial selon ses départements. De ce filtre sur le nom du commercial celà me donne le tableau 2 (1 tableau par commercial avec ses lignes qui le concerne ex: la ligne n°1 concerne le commercial Alain, la ligne 2 Pierre, la ligne 3 Alain ..., ils remplissent les colonnes de leurs lignes et transfèrent leurs modifs sur le T1 qui regroupe l'ensemble des lignes.

    J'espère que tu me suis, en espérant que tu pourras m'aider
    Merci

  4. #4
    Membre expérimenté
    Inscrit en
    Février 2008
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 208
    Par défaut
    Bonjour

    Sans tes fichiers de données il est difficile de suivre mais voici ce que je te propose :
    Place ce code dans un module de ton fichier de récapitulation.
    Lance la procédure "Recap", et ouvre le fichier T2 en le sélectionnant dans le répertoire choisi.
    La procédure copie seulement la ligne 2 et la colle à la suite des autres lignes dans T1. Le fichier T2 sera fermé automatiquement.

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    Sub Recap()
        Application.ScreenUpdating = False
        Fichier_Analyse = ThisWorkbook.Name
        LigneEnCours = Range("A1").End(xlDown).Row + 1
     
        'Ouverture du fichier 1
        Call RechercheFichier(Chemin, Fichier_à_Analyser)
        Workbooks.Open Filename:= _
            Chemin & "\" & Fichier_à_Analyser, local:=True, UpdateLinks:=3
        Windows(Fichier_à_Analyser).Activate
     
        '-----------------
        '---code de traitement
        '-----------------
        Rows("2:2").Select
        Selection.Copy
        Windows(Fichier_Analyse).Activate
        Rows(LigneEnCours & ":" & LigneEnCours).Select
        ActiveSheet.Paste
        Cells(LigneEnCours + 1, 1).Select
        '-----------------
        Windows(Fichier_à_Analyser).Activate
        Application.DisplayAlerts = False
        ActiveWindow.Close SaveChanges:=False
        Application.DisplayAlerts = True
     
        Application.ScreenUpdating = True
     
    End Sub
     
     
    Sub RechercheFichier(Chemin, Fichier)
        If Chemin <> "" Then
            '--- Se place dans le répertoire de l'application ---
            Path = Chemin
            Lect = Left(Path, 1)
            ChDrive Lect
            If InStr(1, Path, "\", 1) <> 0 Then
                ChDir Path
            End If
        End If
     
        fileToOpen = Application _
            .GetOpenFilename("(*.xls),*.xls")
     
        x = 0
        Do
            x = InStr(x + 1, fileToOpen, "\")
            If x = 0 Then Exit Do
            Memox = x
        Loop Until x = 0
        Chemin = Left(fileToOpen, Memox)
        Fichier = Right(fileToOpen, Len(fileToOpen) - Memox)
     
        '--- Se place dans le répertoire de l'application ---
        Path = Chemin
        Lect = Left(Path, 1)
        ChDrive Lect
        If InStr(1, Path, "\", 1) <> 0 Then
            ChDir Path
        End If
    End Sub
    à plus

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Par défaut
    Bonjour,

    Merci pour ton aide mais le code ne fait rien. Je te joins un ex du tableau pour un peu plus de visibilité. La 1iere macro à lancer est Mise_à_jour_cp et la 2ième COPIE_NOUVEAU_TAB. Encore merci
    Bonne soirée
    Fichiers attachés Fichiers attachés

  6. #6
    Membre expérimenté
    Inscrit en
    Février 2008
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 208
    Par défaut
    Bonjour

    Voici le fichier modifié : http://cjoint.com/?ghrQA1OpEM

    Le principe de la procédure "Récap" est le suivant :
    Ouverture du fichier "Isabelle.xls" que tu as créé à partir de ta procédure et dont Isabelle a modifié les données.
    Analyse de ce fichier, copie de chaque ligne et collage dans ton fichier "Classeur_2.xls" dans la feuille active en écrasant les données des lignes correspondantes.
    Attention : je ne vérifie pas le N° de ligne de la colonne A mais je considère que tes N° sont en série continue et je colle les données sur la ligne "LigneEnCours" calculée ainsi "LigneEnCours = LigIni + Num - 1" avec "LigIni = 5" et "Num=N° lu dans chaque cellule de la colonne A du fichier Isabelle". Ce principe est peut être à revoir pour plus de sureté.

    à plus

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Par défaut
    Merci Pierre je vais tester. De mon côté j'ai contourné le problème en demandant à la personne quelle ligne elle veut copier, c'est moins pratique mais au moins ca marche, je te tiens au courant pour ta solution Et UN GRAND MERCI pour ton aide BON WEEK END :
    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 choix_ligne()
            Dim ChoixLigne As Range
            Dim ChoixLigne2 As Range
    Dim AConfirmer
    Dim AConfirmer2
    'transfert du tab isabelle
    ChDir "C:\Documents and Settings\HP_Administrateur\Mes documents\access bureau\05JUIN\AC"
        Workbooks.Open Filename:= _
            "C:\Documents and Settings\HP_Administrateur\Mes documents\access bureau\05JUIN\AC\Tableau agendasJUIN.xls"
     
        Sheets("2008").Select
        'enlever la protection
        Worksheets(1).Unprotect Password:="1953"
        'choix du tableau perso
     ChDir "C:\Documents and Settings\HP_Administrateur\Mes documents\access bureau\05JUIN\AC"
        Workbooks.Open Filename:= _
            "C:\Documents and Settings\HP_Administrateur\Mes documents\access bureau\05JUIN\AC\Classeur1.xls"
     
      'choix de la ligne à transférer
    Set ChoixLigne = Application.InputBox(prompt:="Sélectionnez la ligne à transférer", Title:="choix de la ligne", Type:=8)
    Set ChoixLigne = ChoixLigne.EntireRow
    ChoixLigne.Select
    AConfirmer = MsgBox(prompt:="confirmez la copie de la ligne", Title:="copie de la ligne", Buttons:=vbYesNo + vbExclamation + vbDefaultButton2)
    If AConfirmer = vbYes Then ChoixLigne.Copy
     'COPIER COLLER
       Windows("Tableau agendasJUIN.xls").Activate
       'choix de la ligne à coller
    Set ChoixLigne2 = Application.InputBox(prompt:="Sélectionnez la ligne à coller", Title:="choix de la ligne", Type:=8)
    Set ChoixLigne2 = ChoixLigne2.EntireRow
    ChoixLigne2.Select
    AConfirmer2 = MsgBox(prompt:="confirmez le collage de la ligne", Title:="collage de la ligne", Buttons:=vbYesNo + vbExclamation + vbDefaultButton2)
    If AConfirmer2 = vbYes Then
     
    Windows("Classeur1.xls").Activate
    ChoixLigne.Copy
    Windows("Tableau agendasJUIN.xls").Activate
    ChoixLigne2.Activate
    ActiveSheet.Paste
    End If
     
    End Sub

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Par défaut
    Je viens de tester ca marche, j'ai testé avec plusieurs tableau2 différents, et ca colle bien au bon endroit. Un grand merci pour ta patience et surtout le temps que tu y a consacré.
    Une belle et agréable semaine.

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

Discussions similaires

  1. [VBA] Probleme déclaration de variable
    Par Léponge85 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 11/06/2008, 15h57
  2. déclaration variable vba
    Par fabrice2205 dans le forum Général VBA
    Réponses: 1
    Dernier message: 11/06/2008, 12h04
  3. [VBA-E] déclaration de variables
    Par comanche dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 10/04/2007, 11h56
  4. [VBA]Déclaration de variables
    Par domik dans le forum VBA Access
    Réponses: 6
    Dernier message: 01/04/2007, 21h24
  5. [debutant][Portée] Déclaration de variable .....
    Par Slein dans le forum Langage
    Réponses: 4
    Dernier message: 07/05/2004, 11h43

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