Macro private ne fonctionne pas
Fermé
nannor
-
15 déc. 2021 à 13:27
joupir Messages postés 13 Date d'inscription dimanche 26 janvier 2020 Statut Membre Dernière intervention 11 février 2024 - 17 déc. 2021 à 15:10
joupir Messages postés 13 Date d'inscription dimanche 26 janvier 2020 Statut Membre Dernière intervention 11 février 2024 - 17 déc. 2021 à 15:10
A voir également:
- Macro private ne fonctionne pas
- Navigation in private - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
- Macro logiciel - Télécharger - Organisation
- Macro recorder - Télécharger - Confidentialité
9 réponses
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
15 déc. 2021 à 14:39
15 déc. 2021 à 14:39
La règle d'or en VBA c'est éviter autant que tu le peux les Select. Ils ne font que rallonger l'exécution du code et sont source de nombreux bugs.
Un copier/coller se fait en une seule ligne en spécifiant les onglets respectifs, du style :
Worksheets("Onglet Source").Range("MaPlageSource").Copy Worksheets("Onglet Destination").Range("MaPlageDestination")
dans ton cas :
mois étant une variable définie au préalablement. Si tu veux désigner l'onglet "mois" il faut mettre les guillemets...
Un copier/coller se fait en une seule ligne en spécifiant les onglets respectifs, du style :
Worksheets("Onglet Source").Range("MaPlageSource").Copy Worksheets("Onglet Destination").Range("MaPlageDestination")
dans ton cas :
Worksheets("??").Range("B1:U1").Copy Worksheets(mois).Range("B40")
mois étant une variable définie au préalablement. Si tu veux désigner l'onglet "mois" il faut mettre les guillemets...
bonsoir, la modif effectuée plante lorsque je veux transcrire les données copiées sun une autre feuille du meme classeur. pourtant, lorsque l'esseur survient , c'et bien pointé sur la feuille de destination mais sans tenir compte de le ligne. Et, si j'aappuie sur la touche entrée, les données s'inscrivent bien dans l'orde.. Je me demande sije ne devraitpas reinstaller office. en gros classeur 15feuilles dont 12 pour les mois de l'année, une saisie des tickets, une pour les depenses des charges et une recapitulatif pour l'année.
je vous joint mon code c'est un travail d'amateur, mais avec l'hiver ca fait passer le temps et travailler un peu la mémoire. Merci de votre attention.
a noter que je n'ai as tennu a apporter la modif j'atends que le private fonctionne s'il m'est possible d'y arriver
cordialement
je vous joint mon code c'est un travail d'amateur, mais avec l'hiver ca fait passer le temps et travailler un peu la mémoire. Merci de votre attention.
a noter que je n'ai as tennu a apporter la modif j'atends que le private fonctionne s'il m'est possible d'y arriver
cordialement
joupir
Messages postés
13
Date d'inscription
dimanche 26 janvier 2020
Statut
Membre
Dernière intervention
11 février 2024
16 déc. 2021 à 05:28
16 déc. 2021 à 05:28
bonjour, j'ai oublié le code le voici
Sub convcourses()
'Définition des variables
Dim jour As Integer 'formule incluse dans le feuille de caclcul ticket
Dim nummois As Integer 'formule incluse dans le feuille de caclcul ticket
Dim mois As String 'formule incluse dans le feuille de caclcul ticket
Dim reponse As Byte
' conversion dedonnée formules en données valeurs sur la feuille 'ticket'
Range("A35:S35").Select
Selection.Copy
Range("A40").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
' initialisation des variables
mois = Range("T35")
nummois = Range("V35")
jour = Range("U35")
jour = jour + 3 ' +3 pour faire coincider le jour avec le numéro de ligne
'traitement des données ticket en vue de leur inscription dans le mois concerné
Range("B40:S40").Select
Selection.Copy
Worksheets(mois).Select
Range("B" & jour).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Traitement des données d'un mois en vue de leur inscription sur la feuille recapitulative annuelle, suivant réponse au message
Range("B35:S35").Select
Selection.Copy
Range("B40").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
reponse = MsgBox(" Enregistrer dans le bilan annuel ?", vbYesNo)
' si réponse est oui
If reponse = vbYes Then
Range("B40:S40").Select
Selection.Copy
Sheets("Annuel").Select
Range("C13").Select
ActiveSheet.Paste
' si la réponse est non,il sera possible de quitter excel ou de quitter le macro
ElseIf reponse = vbNo Then
reponse = MsgBox(" Quitter Excel ?", vbYesNo)
If reponse = vbYes Then
Dim w As Workbook
For Each w In Application.Workbooks
w.Save
Next w
Application.quit
Application.DisplayAlerts = True
ElseIf reponse = vbNo Then
Exit Sub
End If
End If
End Sub
Sub convcourses()
'Définition des variables
Dim jour As Integer 'formule incluse dans le feuille de caclcul ticket
Dim nummois As Integer 'formule incluse dans le feuille de caclcul ticket
Dim mois As String 'formule incluse dans le feuille de caclcul ticket
Dim reponse As Byte
' conversion dedonnée formules en données valeurs sur la feuille 'ticket'
Range("A35:S35").Select
Selection.Copy
Range("A40").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
' initialisation des variables
mois = Range("T35")
nummois = Range("V35")
jour = Range("U35")
jour = jour + 3 ' +3 pour faire coincider le jour avec le numéro de ligne
'traitement des données ticket en vue de leur inscription dans le mois concerné
Range("B40:S40").Select
Selection.Copy
Worksheets(mois).Select
Range("B" & jour).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Traitement des données d'un mois en vue de leur inscription sur la feuille recapitulative annuelle, suivant réponse au message
Range("B35:S35").Select
Selection.Copy
Range("B40").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
reponse = MsgBox(" Enregistrer dans le bilan annuel ?", vbYesNo)
' si réponse est oui
If reponse = vbYes Then
Range("B40:S40").Select
Selection.Copy
Sheets("Annuel").Select
Range("C13").Select
ActiveSheet.Paste
' si la réponse est non,il sera possible de quitter excel ou de quitter le macro
ElseIf reponse = vbNo Then
reponse = MsgBox(" Quitter Excel ?", vbYesNo)
If reponse = vbYes Then
Dim w As Workbook
For Each w In Application.Workbooks
w.Save
Next w
Application.quit
Application.DisplayAlerts = True
ElseIf reponse = vbNo Then
Exit Sub
End If
End If
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
16 déc. 2021 à 14:08
16 déc. 2021 à 14:08
Bonjour Nannor/Joupir, bonjour le forum,
Peut-être comme ça :
Peut-être comme ça :
Sub convcourses() 'Définition des variables Dim OT As Worksheet Dim OM As Worksheet Dim OA As Worksheet Dim jour As Integer 'formule incluse dans le feuille de caclcul ticket Dim nummois As Integer 'formule incluse dans le feuille de caclcul ticket Dim mois As String 'formule incluse dans le feuille de caclcul ticket Dim reponse1 As Integer Dim reponse2 As Integer Dim w As Workbook Set OT = Worksheets("ticket") Set OA = Worksheets("Annuel") ' conversion dedonnée formules en données valeurs sur la feuille 'ticket' OT.Range("A35:S35").Copy OT.Range("A40").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ' initialisation des variables mois = OT.Range("T35") Set OM = Worksheets(mois) nummois = OT.Range("V35") jour = OT.Range("U35") jour = jour + 3 ' +3 pour faire coincider le jour avec le numéro de ligne 'traitement des données ticket en vue de leur inscription dans le mois concerné OT.Range("B40:S40").Copy OM.Range("B" & jour).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'Traitement des données d'un mois en vue de leur inscription sur la feuille recapitulative annuelle, suivant réponse au message OM.Range("B35:S35").Copy OM.Range("B40").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False reponse1 = MsgBox(" Enregistrer dans le bilan annuel ?", vbYesNo) ' si réponse est oui If reponse1 = vbYes Then OM.Range("B40:S40").Copy OA.Range("C13") ' si la réponse est non,il sera possible de quitter excel ou de quitter le macro ElseIf reponse1 = vbNo Then reponse2 = MsgBox(" Quitter Excel ?", vbYesNo) If reponse2 = vbYes Then For Each w In Application.Workbooks w.Save Next w Application.Quit Application.DisplayAlerts = True ElseIf reponse2 = vbNo Then Exit Sub End If End If End Sub
joupir
Messages postés
13
Date d'inscription
dimanche 26 janvier 2020
Statut
Membre
Dernière intervention
11 février 2024
16 déc. 2021 à 15:31
16 déc. 2021 à 15:31
bonjour à tous les forumeurs,
merci a tous, Thau Theme un code super qui marche super bien . Et surtout qui confirme mon manque de connaissance en matiere de developement dans ce langage.
Faut dire que j'ai developper en DBase 3 et Dbase 4 il y a plus de 25 ans mais plus rien à voir et puis c'est loin.
Encore une fois merci je vais continuer, pour ajouter les charges fixes et ce sera terminé.
Je vais devoir trouver un autre passe temps.
Bonnes fetes de fin d'année a tous les lecteurs et lectrices.
merci a tous, Thau Theme un code super qui marche super bien . Et surtout qui confirme mon manque de connaissance en matiere de developement dans ce langage.
Faut dire que j'ai developper en DBase 3 et Dbase 4 il y a plus de 25 ans mais plus rien à voir et puis c'est loin.
Encore une fois merci je vais continuer, pour ajouter les charges fixes et ce sera terminé.
Je vais devoir trouver un autre passe temps.
Bonnes fetes de fin d'année a tous les lecteurs et lectrices.
joupir
Messages postés
13
Date d'inscription
dimanche 26 janvier 2020
Statut
Membre
Dernière intervention
11 février 2024
17 déc. 2021 à 08:35
17 déc. 2021 à 08:35
bonjour,
une petite question a Thau Theme le code impec, par contre est il possible à chaque connection à une feuille differente la feuille de départ étant OT, elle reste visible durant le court laps de temps d'excution de la macro.
J'aimerai si possible les visualiser. ne serait-ce que pour verifier qu'il n'y a pas eu de trucs dus à une mise a jour d'office ou windows.
Merci par avance
une petite question a Thau Theme le code impec, par contre est il possible à chaque connection à une feuille differente la feuille de départ étant OT, elle reste visible durant le court laps de temps d'excution de la macro.
J'aimerai si possible les visualiser. ne serait-ce que pour verifier qu'il n'y a pas eu de trucs dus à une mise a jour d'office ou windows.
Merci par avance
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
17 déc. 2021 à 10:35
17 déc. 2021 à 10:35
Bonjour Joupir, bonjour le forum,
Rajoute :
en dessous de la ligne : Set OT = Worksheets("ticket")
Rajoute :
OT.Activate
en dessous de la ligne : Set OT = Worksheets("ticket")
joupir
Messages postés
13
Date d'inscription
dimanche 26 janvier 2020
Statut
Membre
Dernière intervention
11 février 2024
17 déc. 2021 à 15:10
17 déc. 2021 à 15:10
Re bonjour
merci , ca marche c'etait pourtant pas compliqué .
Et à tout le forum Passez de bonnes fetes de fin d'année
merci , ca marche c'etait pourtant pas compliqué .
Et à tout le forum Passez de bonnes fetes de fin d'année