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 :

Gérer deux classeurs avec un seul userform


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2020
    Messages : 90
    Par défaut Gérer deux classeurs avec un seul userform
    Bonjour j'ai mon code qui a arrété de fonctionné.
    je gere deux feuilles ouvertes a partir d'un combobox
    ça marchait parfaitement mais ça s'est arreté de fonctionner et on me sort une erreur au niveau du With Workbooks("AVIONS").Sheets("Me.ComboBox2.Value")
    mon classeurs avion est le classeur principale, c'est celui qui a le userform en son sein.

    Merci de bien vouloir m'aider
    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
    Private Sub CommandButton1_Click()
     
    With Workbooks("C-CLIENT").Sheets(Me.ComboBox1.Value)
        rw2 = .Cells(Rows.Count, "A").End(xlUp).Row + 1
     
                .Range("A" & rw2) = ComboBox1.Value
                .Range("B" & rw2) = TextBox5.Value
                .Range("C" & rw2) = TextBox2.Text
                .Range("D" & rw2) = TextBox4.Text
                .Range("E" & rw2) = TextBox6.Text
                .Range("F" & rw2) = TextBox3.Text
                .Range("H" & rw2) = ComboBox2.Text
                .Range("G" & rw2) = TextBox10.Text
     
     
    End With
    With Workbooks("AVIONS").Sheets("Me.ComboBox2.Value")
        rw1 = .Cells(Rows.Count, "A").End(xlUp).Row + 1
                .Range("A" & rw2) = ComboBox1.Value
                .Range("B" & rw2) = TextBox5.Value
                .Range("C" & rw2) = TextBox2.Text
                .Range("D" & rw2) = TextBox4.Text
                .Range("E" & rw2) = TextBox6.Text
                .Range("F" & rw2) = TextBox3.Text
                .Range("H" & rw2) = ComboBox2.Text
                .Range("G" & rw2) = TextBox10.Text
     
     
     
     
    End With
    ComboBox1.Text = ""
    ComboBox2.Text = ""
    TextBox2.Text = ""
    TextBox3.Text = ""
    TextBox10.Text = ""
    TextBox5.Text = ""
    TextBox6.Text = ""
    TextBox4.Text = ""
     
    MsgBox ("ENREGISTREMENT EFFECTUER")
    End Sub
    je rappel que j'ai mis ce code (suivant) pour selectionner les feuilles dans les differents classeurs afin d'enregistrer les informations
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Userform_Initialize()
    Set wk1 = ThisWorkbook  '<--- AVION
    Set wk2 = Workbooks("C-CLIENT.xlsm")
    Dim ws As Worksheet
    Dim WF As Worksheet
     
    For Each ws In wk1.Worksheets
    Me.ComboBox2.AddItem ws.Name
    Next ws
     
    For Each WF In wk2.Sheets
    Me.ComboBox1.AddItem WF.Name
    Next WF
    End Sub
      0  0

  2. #2
    Membre Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut
    Bonjour,


    le souci ne viendrait-il pas de ta ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With Workbooks("AVIONS").Sheets("Me.ComboBox2.Value")
    , il faudrait supprimer les guillements, ou ton code cherche la feuille nommée "Me.ComboBox2.Value" et non la valeur de ta cbo.

    Bàt
      0  0

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Dorel.D Voir le message
    ça marchait parfaitement mais ça s'est arreté de fonctionner et on me sort une erreur au niveau du With Workbooks("AVIONS").Sheets("Me.ComboBox2.Value")
    Je ne mets pas ta parole en doute mais il me semble peu probable que ceci ait un jour fonctionné.
    Essaye plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With Workbooks("AVIONS").Sheets(Me.ComboBox2.Value)
    Compare ta ligne 17 avec ta ligne 3.
      0  0

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Télescopage.

    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Me.ComboBox2.Value")
    Ouh la!

    Si la valeur de la Combobox désigne la feuille de travail alors il n'est pas souhaitable de placer cette propriété entre 2 double quottes.
    Tel que tu l'écris, le classeur comporte une feuille nommée "Me.ComboBox2.Value"
      0  1

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2020
    Messages : 90
    Par défaut
    Grand merci a vous, ça fonctionne .
    vraiment merci

    j'ai un autre soucis sur le premier bouton qui doit ouvrir une feuille dans le classeur principale qui est AVIONS.
    on me met une erreur au niveau de If Workbooks("AVIONS").Sheets(i).Name = Nom Then Verif = True
    pourtant l'autre fonctionne tres bien quand je met le nom du classeur.
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Private Sub CommandButton9_Click()
    Dim Nom As String, i As Byte, Verif As Boolean, myMonth As Integer, myYear As Integer, myDate As Date, ee As String, a As Long
     myDate = Date ' enregistre la date d'aujourd'hui dans la variable myDate
     
    myMonth = (Month(myDate))  ' No du mois précédent
    myYear = Year(Date) 'No année
    ee = ""
    recom:
    Verif = False
    Nom = InputBox("Définissez le nom du nouveau client svp", "Ajout nouveau client") & "" & (myMonth) & " - " & myYear
     
    If Nom = "" Then Exit Sub
     
    For i = 1 To Sheets.Count
        If Workbooks("AVIONS").Sheets(i).Name = Nom Then Verif = True
    Next
     
    If Verif = True Then
        MsgBox "la feuille " & Nom & " existe déjà, veuillez choisir un autre nom"
        GoTo recom
    End If
     
    Workbooks("AVIONS").Sheets.Add(After:=Sheets(Sheets.Count)).Name = Nom
     
            Workbooks("AVIONS").Sheets(1).Activate
            Range("A1:N3").Select
            Selection.Copy
            Workbooks("AVIONS").Sheets(Nom).Activate
            Range("A1").Select
            ActiveSheet.Paste
     
    Unload Me
    UserForm1.Show
     
    End Sub
      0  0

  6. #6
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut,

    Tu peux afficher la fenêtre des variables locales au sein de l'éditeur VBE pour vérifier la valeur de la variable "Nom" et constater ainsi l'existence, ou non, de la feuille.

    Quoi qu'il en soit,

    Tel que tu écris ton code, si la feuille n'est pas la dernière alors ta variable reverra toujours False.
    Il faut bien que ta boucle s'arrête, non?


    Quoi qu'il en soit du Quoi qu'il en soit,


    Evitons les sorties de boucle anticipées.

    Privilégier ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function SheetExists(Name As String) As Boolean
      Dim Counter As Long
      Counter = 1
     
      Do While Counter <= Sheets.Count And Not SheetExists
        If StrComp(Name, Sheets(Counter).Name, vbTextCompare) = 0 Then SheetExists = True
        Counter = Counter + 1
      Loop
    End Function
    Une variante (non testée)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SheetExists =(StrComp(Name, Sheets(Counter).Name, vbTextCompare) = 0)
      0  0

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2020
    Messages : 90
    Par défaut
    tres bien ecrit en français mais je ne comprends malheureusement rien.
    je dois créer des feuilles avec des nom et date (mois et année) dans chacun de mes deux classeur, j'ai utilisé un bouton pour ouvrir une feuille dans chacun des classeurs.
    mes classeurs sont AVIONS et C-CLIENT.
    l'un des code ne fonctionne pas. actuellement c'est le bouton 8 qui ne fonctionne pas et on me met l'erreur a ce niveau : If Workbooks("C-CLIENT").Sheets(i).Name = Nom Then Verif = True

    voici les deux codes
    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    Private Sub CommandButton9_Click()
    Dim Nom As String, i As Byte, Verif As Boolean, myMonth As Integer, myYear As Integer, myDate As Date, ee As String, a As Long
     myDate = Date ' enregistre la date d'aujourd'hui dans la variable myDate
     
    myMonth = (Month(myDate))  ' No du mois précédent
    myYear = Year(Date) 'No année
    ee = ""
    recom:
    Verif = False
    Nom = InputBox("Définissez le nom du nouveau svp", "Ajout nouveau ") & "" & (myMonth) & " - " & myYear
     
    If Nom = "" Then Exit Sub
     
    For i = 1 To Sheets.Count
        If Workbooks("AVIONS").Sheets(i).Name = Nom Then Verif = True
    Next
     
    If Verif = True Then
        MsgBox "la feuille " & Nom & " existe déjà, veuillez choisir un autre nom"
        GoTo recom
    End If
     
    Workbooks("AVIONS").Sheets.Add(After:=Sheets(Sheets.Count)).Name = Nom
            Application.ScreenUpdating = False
            Workbooks("AVIONS").Sheets(1).Activate
            Range("A1:P3").Select
            Selection.Copy
            Workbooks("AVIONS").Sheets(Nom).Activate
            Range("A1").Select
            ActiveSheet.Paste
            'On copie colle uniquement le format des colonnes
            Workbooks("AVIONS").Sheets(1).Activate
            Columns("A:P").Select
            Selection.Copy
            Workbooks("AVIONS").Sheets(Nom).Activate
            Range("A1").Select
            Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
            Application.ScreenUpdating = True
    Unload Me
    UserForm1.Show
    End Sub
     
    Private Sub CommandButton8_Click()
    Dim Nom As String, i As Byte, Verif As Boolean, myMonth As Integer, myYear As Integer, myDate As Date, ee As String, a As Long
     myDate = Date ' enregistre la date d'aujourd'hui dans la variable myDate
     
    myMonth = (Month(myDate))  ' No du mois précédent
    myYear = Year(Date) 'No année
    ee = ""
    recom:
    Verif = False
    Nom = InputBox("Définissez le nom du nouveau client svp", "Ajout nouveau client") & "" & (myMonth) & " - " & myYear
     
    If Nom = "" Then Exit Sub
     
    For i = 1 To Sheets.Count
        If Workbooks("C-CLIENT").Sheets(i).Name = Nom Then Verif = True
    Next
     
    If Verif = True Then
        MsgBox "la feuille " & Nom & " existe déjà, veuillez choisir un autre nom"
        GoTo recom
    End If
     
    Workbooks("C-CLIENT").Sheets.Add(After:=Sheets(Sheets.Count)).Name = Nom
            Application.ScreenUpdating = False
            Workbooks("C-CLIENT").Sheets(1).Activate
            Range("A1:Q3").Select
            Selection.Copy
            Workbooks("C-CLIENT").Sheets(Nom).Activate
            Range("A1").Select
            ActiveSheet.Paste
            'On copie colle uniquement le format des colonnes
            Workbooks("C-CLIENT").Sheets(1).Activate
            Columns("A:Q").Select
            Selection.Copy
            Workbooks("C-CLIENT").Sheets(Nom).Activate
            Range("A1").Select
            Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
            Application.ScreenUpdating = True
    Unload Me
    UserForm1.Show
    End Sub
      0  0

  8. #8
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Saut,

    Pas de problème, Dorel.

    Si tu codes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 1 To Sheets.Count
        If Workbooks("AVIONS").Sheets(i).Name = Nom Then Verif = True
    Next
    VBA ira balayer toutes les feuilles de ton classeur.
    Quand bien même, une feuille verrait son nom toppé, la feuille suivante ne l'aurait pas.

    Si tu testes "mercatog" et si les feuilles de ton classeur (dans l'ordre d'indice) se nomment "mercatog", "Theze" , alors ta variable booléenne va prendre la valeur Vrai puis Faux.
    Ce qui revient à dire que ta boucle doit s'interrompre dès que la valeur est Vrai.
    Ce qui implique ainsi une sortie anticipée de la boucle (Exit For).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    'Initialisation
    Verif = False
     
    For i = 1 To Sheets.Count
        If Workbooks("AVIONS").Sheets(i).Name = Nom Then
             Verif = True
              Exit For
        End If
    Next i
    Cela dit, et j'en ai pris conscience récemment, cette méthodologie dénature quelque peu l'objet d'une boucle qui est de balayer toutes les occurrences présentes.

    Mieux vaut alors utiliser une boucle qui va s'exercer tant que la valeur est fausse et que toutes les feuilles n'ont pas été toutes testées au niveau de leur nom.
    C'est le code que je t'ai proposé.

    Pour le contrôle du code, dans le menu VBE (ALT + F11), Choisir Menu "Affichage \ Fenêtre variables locales".

    Placer un point d'arrêt (Clic dans la marge au regard du code) pour placer un point d'arrêt.

    Lancer la procédure (bouton valider au autre)

    Lorsque le débugger s'arrêtera sur la ligne de ce point, dérouler le programme en pas à pas (F8)

    Tu verras alors la valeur de la variable "Nom" dans la fenêtre. C'est cette valeur qu'il t'appartient de contrôler puis, éventuellement, de modifier la déclaration de la variable Nom

    Tu peux dans un premier temps tester ton code avec le seul apport Exit For, puis tester avec le code que je te propose (Do…)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If ExistFeuillle(Nom) = False Then
    Juste un commentaire, pour ce genre de test, il est plus souple d'utiliser une fonction retournant une valeur booléenne.
      0  0

  9. #9
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2020
    Messages : 90
    Par défaut
    j'ai fais une petite remarque
    quand je lance le bouton qui est censé créer la page dans le classeur principale, il crée la page et active le classeur sous le userform.
    dans ce même temps si je veux créer une feuille dans l'autre classeur ça ne passe pas.
    Mais si j'affiche l'autre classeur avant et je lance mon userform, la page se créer.

    Je sais pas pourquoi c'est comme ça
      0  0

  10. #10
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Nos post se sont croisés.

    Je l'exprime souvent.
    Il est prudent, voire nécessaire, de bien rattacher les feuilles à leur classeur parent.
    Dans le cas contraire, c'st le classeur actif qui est affecté du code, ce qui peut être source d'erreur..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Verif = False
     
    With Workbooks("AVIONS")
      For i = 1 To .Worksheets.Count
         If .Sheets(i).Name = Nom Then
             Verif = True
              Exit For
         End If
      Next i
    End With
      0  0

  11. #11
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2020
    Messages : 90
    Par défaut
    escuse, je suis vraiment perdu
    je met ce code ou ici ? je le remplace par quoi ?
      0  0

  12. #12
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    En lieu et place de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 1 To Sheets.Count
        If Workbooks("AVIONS").Sheets(i).Name = Nom Then Verif = True
    Next
      0  0

  13. #13
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2020
    Messages : 90
    Par défaut
    ça me met une erreur d'execution '1004' : la methode add de l'objet 'sheets' a échoué
    et c'est cette page qui est soulignée : Workbooks("C-CLIENT").Sheets.Add(After:=Sheets(Sheets.Count)).Name = Nom
    voici le code qui se trouve dans le bouton
    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
    Private Sub CommandButton8_Click()
    Dim Nom As String, i As Byte, Verif As Boolean, myMonth As Integer, myYear As Integer, myDate As Date, ee As String, a As Long
     myDate = Date ' enregistre la date d'aujourd'hui dans la variable myDate
     
    myMonth = (Month(myDate))  ' No du mois précédent
    myYear = Year(Date) 'No année
    ee = ""
    recom:
    Verif = False
    Nom = InputBox("Définissez le nom du nouveau client svp", "Ajout nouveau client") & "" & (myMonth) & " - " & myYear
     
    If Nom = "" Then Exit Sub
     
    Verif = False
     
    With Workbooks("C-CLIENT")
      For i = 1 To .Worksheets.Count
         If .Sheets(i).Name = Nom Then
             Verif = True
              Exit For
         End If
      Next i
    End With
     
    If Verif = True Then
        MsgBox "la feuille " & Nom & " existe déjà, veuillez choisir un autre nom"
        GoTo recom
    End If
     
    Workbooks("C-CLIENT").Sheets.Add(After:=Sheets(Sheets.Count)).Name = Nom
            Application.ScreenUpdating = False
            Workbooks("C-CLIENT").Sheets(1).Activate
            Range("A1:Q3").Select
            Selection.Copy
            Workbooks("C-CLIENT").Sheets(Nom).Activate
            Range("A1").Select
            ActiveSheet.Paste
            'On copie colle uniquement le format des colonnes
            Workbooks("C-CLIENT").Sheets(1).Activate
            Columns("A:Q").Select
            Selection.Copy
            Workbooks("C-CLIENT").Sheets(Nom).Activate
            Range("A1").Select
            Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
            Application.ScreenUpdating = True
    Unload Me
    UserForm1.Show
    End Sub
      0  0

  14. #14
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    (Nous pourrons envisager dans un second temps l'amélioration du code)

    Que te renvoie la variable "Nom" dans la fenêtre des variables locales?
      0  0

  15. #15
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2020
    Messages : 90
    Par défaut
    je ne vous suis pas trop.
    peut par un code avec commentaire a coté, je pourrai mieux comprendre
      0  0

  16. #16
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    As-tu suivi les indications du post #8 (Point d'arrêt, Exécution pas à pas…)?
      0  0

  17. #17
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2020
    Messages : 90
    Par défaut
    je ne sais vraiment pas de quoi on parle, je suis novice en vba
    c'est ma premiere fois d'entendre parler de ça
      0  0

  18. #18
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Moi je veux bien!
    Tu enchaînes les post sans les considérer un par un!

    Pour l'affichage des variables locales, voir plus haut.

    A gauche du code se trouve une barre verticale.

    Tu cliques sur cette barre en face de la ligne de code.
    Figure alors un point , en règle générale de couleur rouge.
    Le texte est surligné de la même couleur.

    Tu lances le formulaire et actives le bouton de validation.

    Le débugger va se positionner sur la ligne surlignée en rouge, et qui sera également surlignée en jaune (généralement)

    Tu actives une exécution en pas à pas en activant successivement la touche F8 de ton clavier.

    Dans la fenêtre des variables locales, la variable Nom retournera une valeur.

    Quelle est cette valeur?
      0  0

  19. #19
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour Dorel.D,
    je ne sais vraiment pas de quoi on parle, je suis novice en vba
    c'est ma premiere fois d'entendre parler de ça
    Une des choses à bien connaître lorsque l'on développe, c'est l'éditeur et les outils de débogage

    Je te conseille donc de lire attentivement ces tutoriels
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier
      1  0

  20. #20
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2020
    Messages : 90
    Par défaut
    désolé de vous fatigué, c'est souvent compliqué par ecrit
    quand je fais F8 sur la ligne d'erreur
    il ya des erreurs qui sont signalées dans cette parti de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Userform_Initialize()
    Set wk1 = ThisWorkbook  '<--- AVION
    Set wk2 = Workbooks("C-CLIENT.xlsm")
    Dim ws As Worksheet
    Dim WF As Worksheet
     
    For Each ws In wk1.Worksheets
    Me.ComboBox2.AddItem ws.Name
    Next ws
     
    For Each WF In wk2.Sheets
    Me.ComboBox1.AddItem WF.Name
    Next WF
    End Sub
      0  0

Discussions similaires

  1. Gerer deux classeurs avec un seul userform
    Par Dorel.D dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 01/03/2020, 16h50
  2. Impression de deux pages avec un seul lien
    Par gantec dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 28/08/2007, 17h04
  3. utiliser deux formulaire avec une seule action
    Par fouyou dans le forum Struts 1
    Réponses: 4
    Dernier message: 28/05/2007, 20h40
  4. Comment ouvrir deux pages avec un seul lien ?
    Par tiliut dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/05/2007, 17h43
  5. Ouvrir deux pages avec un seul form
    Par coco38 dans le forum Langage
    Réponses: 4
    Dernier message: 30/04/2007, 14h19

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