XL 2013 Afficher patienter pendant de l'exécution d'un macro

badraaliou4

XLDnaute Occasionnel
Bonjour mes chers,
J'ai trois feuille: Accueil, compte et load
Mon Macro permet de copier des données de la feuille accueil vers la feuille compte.
Je veux que pendant le Exécution du macro il affiche la feuille"load"
Ci-dessous mon code qui ne marche pas.
VB:
Sheets("load").select
application.screenupdating=false
sheets("Accueil").select
.............
application.screenupdating=true
Sheets("load").select
sheets("Accueil").select
range("c7").select
end sub
Avec ce code la feuille Accueil reste toujours afficher.
Merci pour votre aide?
 

badraaliou4

XLDnaute Occasionnel
re
bon alors perso je vois pas l'utilité d'une telle mécanique pour enregistrer 4 valeurs dans une plage
Mais au combien si ça te fait plaisir que cela te tienne
en tout cas chez moi ca fonctionne et rien n'est bloqué (je fait 1,2,3,10 enregistrement et ça fonctionne très bien)
mais je répète c'est absolument inutile , l'enregistrement se fait en moins de temps qu'un battement de sil
pourquoi veux tu absolument ralentir avec du superflu

si c’était un enregistrement de milliers de cellules je comprendrais mais la Non !!
inutile,inutile,inutile,inutile !!!!!!(c'est bon je l'ai assez dis???)
tu perds ton temps avec ça c'est mon opinion ca vaut pas le coup
Ok merci . Mais chez moi après le premier enregistrement si je remplie le combobox je ne peut plus renseigner les autres cellules.. il faut que j'ouvre une autre feuille et revenir dans la feuille accueil pour pouvoir renseigner la cellule montant et libellé.
 

patricktoulon

XLDnaute Barbatruc
re
perso je me contenterais de ca
VB:
Sub ajouter()
' ajouter Macro
    Dim mouvement$, compte$, montant$, libelle$, bool As Boolean
    'trouver les informations du contenu
    With Worksheets("accueil")
        mouvement = .Range("c5").Value: bool = mouvement <> ""
        compte = .Range("c7").Value: bool = bool And compte <> ""
        montant = .Range("c9").Value: bool = bool And montant <> ""
        libelle = .Range("c11").Value: bool = bool And libelle <> ""
        If bool Then
            arr = Array(Date, .[C5], .[C7], .[C9], .[C11])

            With Sheets("compte").ListObjects("Tableau2")
                .ListRows.Add
                  'MsgBox .ListRows(.ListRows.Count).Range.Address
                .ListRows(.ListRows.Count).Range = arr
            End With
        Else
            MsgBox "remplissez toute les cases SVP" & vbCrLf & " si toute fois vous refuseriez de les remplir ce classeur s'auto détruira dans 1 seconde"
        End If
    .Range("C5,C7,C9,C11").ClearContents
End With

End Sub
c'est quand même pas mission impossible non ?:p
et basta ;)

ps: j'ai laissé tes 4 variable mais somme toute quand tu arrivera a comprendre le code tu constatera qu'elles sont inutiles aussi
 

patricktoulon

XLDnaute Barbatruc
re
allez le voila sans tes variables
VB:
Sub ajouter()
    Dim bool As Boolean
 
    With Worksheets("accueil")
        bool = .[C5] <> "" And .[C7] <> "" And .[C9] <> "" And .[C11] <> "" 'on obtient un boolean(true/false ) selon si tout est rempli ou non
        If bool Then
            arr = Array(Date, .[C5], .[C7], .[C9], .[C11])    'on construit un array en y metant la date au debut

            With Sheets("compte").ListObjects("Tableau2")    'on capte le tableau2 dans compte
                .ListRows.Add    ' on lui ajoute simplement une ligne
                .ListRows(.ListRows.Count).Range = arr    'on insere l'array dans la range que forme la nouvelle ligne
            End With
            MsgBox "c'est bon "
        Else
            MsgBox "remplissez toute les cases SVP" & vbCrLf & " si toute fois vous refuseriez de les remplir ce classeur s'auto detruira dans 1 seconde"
        End If
        .Range("C5,C7,C9,C11").ClearContents
    End With

End Sub
et entre parenthèses!!! SANS BOUGER DU SHEETS ACCUEIL
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Information. La méthode Add de la collection ListRows renvoie un objet ListRow. On peut donc faire ce que je fais toujours :
VB:
.ListRows.Add.Range.Value = arr
Enfin je prends toujours TVL comme nom du tableau (Table des Valeurs de la Ligne)
 

badraaliou4

XLDnaute Occasionnel
re
allez le voila sans tes variables
VB:
Sub ajouter()
    Dim bool As Boolean

    With Worksheets("accueil")
        bool = .[C5] <> "" And .[C7] <> "" And .[C9] <> "" And .[C11] <> "" 'on obtient un boolean(true/false ) selon si tout est rempli ou non
        If bool Then
            arr = Array(Date, .[C5], .[C7], .[C9], .[C11])    'on construit un array en y metant la date au debut

            With Sheets("compte").ListObjects("Tableau2")    'on capte le tableau2 dans compte
                .ListRows.Add    ' on lui ajoute simplement une ligne
                .ListRows(.ListRows.Count).Range = arr    'on insere l'array dans la range que forme la nouvelle ligne
            End With
            MsgBox "c'est bon "
        Else
            MsgBox "remplissez toute les cases SVP" & vbCrLf & " si toute fois vous refuseriez de les remplir ce classeur s'auto detruira dans 1 seconde"
        End If
        .Range("C5,C7,C9,C11").ClearContents
    End With

End Sub
et entre parenthèses!!! SANS BOUGER DU SHEETS ACCUEIL
Vous pouvez mo
re
allez le voila sans tes variables
VB:
Sub ajouter()
    Dim bool As Boolean

    With Worksheets("accueil")
        bool = .[C5] <> "" And .[C7] <> "" And .[C9] <> "" And .[C11] <> "" 'on obtient un boolean(true/false ) selon si tout est rempli ou non
        If bool Then
            arr = Array(Date, .[C5], .[C7], .[C9], .[C11])    'on construit un array en y metant la date au debut

            With Sheets("compte").ListObjects("Tableau2")    'on capte le tableau2 dans compte
                .ListRows.Add    ' on lui ajoute simplement une ligne
                .ListRows(.ListRows.Count).Range = arr    'on insere l'array dans la range que forme la nouvelle ligne
            End With
            MsgBox "c'est bon "
        Else
            MsgBox "remplissez toute les cases SVP" & vbCrLf & " si toute fois vous refuseriez de les remplir ce classeur s'auto detruira dans 1 seconde"
        End If
        .Range("C5,C7,C9,C11").ClearContents
    End With

End Sub
et entre parenthèses!!! SANS BOUGER DU SHEETS ACCUEIL
Ce code ne fait pas la même chose que mon code.
merci de remplacer par Ce code et vérifiez vous-même.
 

Discussions similaires

Réponses
5
Affichages
98

Statistiques des forums

Discussions
312 108
Messages
2 085 366
Membres
102 874
dernier inscrit
Petro2611