Variable en dur

  • Initiateur de la discussion Variable en dur
  • Date de début
V

Variable en dur

Guest
:) Je souhaiterai nonner une variable provenant d'une feuille de calcul (la cellule cible fait référence à une formule de type ='bonjour'&A1)

Par la suite je souhaiterais faire une vérification de texte sur une zone de calcul qui fait référence au texte de la variable.

Aujourd'hui j'ai ça

If Sheets('ER').Cells(Ltab, 'B') = 'SOLDE' Then Ltab = Ltab + 1
If Sheets('ER').Cells(Ltab, 'B') = 'SOLDE INITIAL 31.05.2005' Then Ltab = Ltab + 1
If Sheets('ER').Cells(Ltab, 'B') = 'SOLDE FINAL 31.05.2005' Then Cells(Ltab, 'C').Copy: Sheets('Contrôle ER').Select: Cells(Lfin, 'D').Select: Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False


Je souhaiterais mettre en variable 'SOLDE INITIAL 31.05.2005' et 'SOLDE FINAL 31.05.2005'
 

ChTi160

XLDnaute Barbatruc
Bonjour ,Salut Variable en dur !!!!!!!!!!!! Lol

En premier lieu ATTENTION à ta façon de prendre la parole sur le FORUM re Bonjour
jette un oeil sur la charte
Enfin re Bonjour
as tu essayé de déclaré deux constantes
ex Const S1 As String ='SOLDE INITIAL 31.05.2005'
Const S2 As String ='SOLDE FINAL 31.05.2005'
celà dans la partie Déclaration d’un Userform
ou d’un module, dans une procédure
Option Explicit
dans la partie Générale /déclaration du Userform1

Const S1 As String = 'DDDDDDD'
Private Sub UserForm_Initialize ()

Label1.Caption = S1
End Sub


Private Sub UserForm_Initialize ()
Dim S3 As String
S3 = 'TTTTTTT'

Label1.Caption = S3
End Sub

dans la section Générale/déclaration de la Feuil1
Option Explicit

Const S As String = 'Solde'

Private Sub Worksheet_Activate()
Range('A1') = S ‘on aura en A1 “Solde”
End Sub
ces constantes peuvent aussi être Déclarées comme Public
Public Const S1 As String ='SOLDE INITIAL 31.05.2005' afin d’être utilisable dans toutes les procédures du projet
je n'ai pas testé je ne suis pas non plus un grand conteur tu peux aussi voir dans l’aide de VBA la Déclaration des Variables cela t’aidera sûrement

Message édité par: ChTi160, à: 15/06/2005 12:00
 
T

Tiltan

Guest
Merci pour la réponse, toutefois les useform ne m'interessent peu, je m'explique:

En fait, j'ai essayé de déclarer les deux variables ainsi :

Dim date1 As Variant
date1 = Names('Dat1')
Dim date2 As Variant
date2 = Names('Dat2')
Ce sont 2 cellules nonnées 'Dat1' et 'Dat2' que je déclare en variables date1 et date2. Ce que je souhaite c'est de modifier la date tous les mois.

Exemple : 'Solde initial ' + date =Date1

Dans ma macro je souhaite comparer le texte 'Solde initial + date' soit la variable Dat1 et le texte de ma base de donnée que je reçois tous les mois.

Finalité de la macro : Automatiser la comparaison et la vérification Solde intial en début d'exercice + mouvements = Solde Final
 
T

Tiltan

Guest
Voici ma macro : Dim date1 As Variant
date1 = Names('Dat1')
Dim date2 As Variant
date2 = Names('Dat2')
Sheets('Contrôle ER').Select ' remise a zero feuille du résultat
Cells.Select
Selection.ClearContents
Range('A1').Select
ActiveCell.FormulaR1C1 = ' Compte '
Range('B1').Select
ActiveCell.FormulaR1C1 = ' Solde Initial '
Range('C1').Select
ActiveCell.FormulaR1C1 = ' Mouvement '
Range('D1').Select
ActiveCell.FormulaR1C1 = ' Solde Final '
Range('E1').Select
ActiveCell.FormulaR1C1 = ' Ecart'
Sheets('Contrôle ER').Select
Sheets('ER').Select
la = 2 'début de tableau
While Cells(la, 'A') > ''
la = la + 1
Wend
la = la - 1 'rectification la = derniere ligne

Lfin = 2 'initialisation
For Ltab = 2 To la 'boucle principale
Sheets('ER').Select
Cells(Ltab, 'A').Select
Selection.Copy
cpte = Cells(Ltab, 'A')
Sheets('Contrôle ER').Select
Cells(Lfin, 'A').Select
ActiveSheet.Paste
Sheets('ER').Select
Cells(Ltab, 'C').Select
Application.CutCopyMode = False
Selection.Copy
Sheets('Contrôle ER').Select
Cells(Lfin, 'B').Select
ActiveSheet.Paste
Ltab = Ltab + 1 '
Sheets('ER').Select
While Cells(Ltab, 'A') = cpte
If Left(Cells(Ltab, 'B'), 4) <> 'SOLD' Then Cells(Ltab, 'C').Copy: Sheets('Contrôle ER').Select: Cells(Lfin, 'C').Select: Selection.PasteSpecial Paste:=xlAll, Operation:=xlAdd, SkipBlanks:=False, Transpose:=False: Sheets('ER').Select: Ltab = Ltab + 1
' variante si toutes les lignes qui ne sont pas des mouvements commencent par 'solde '
'et si aucun mouvement ne commence par solde
' If Left(Cells(Ltab, 'B'), 4) = 'Mouv' Then Cells(Ltab, 'C').Copy: Sheets('Contrôle ER').Select: Cells(Lfin, 'C').Select: Selection.PasteSpecial Paste:=xlAll, Operation:=xlAdd, SkipBlanks:=False, Transpose:=False: Sheets('ER').Select: Ltab = Ltab + 1
If Sheets('ER').Cells(Ltab, 'B') = 'SOLDE IRIS' Then Ltab = Ltab + 1
If Sheets('ER').Cells(Ltab, 'B') = 'date1' Then Ltab = Ltab + 1
If Sheets('ER').Cells(Ltab, 'B') = 'date2' Then Cells
(Ltab, 'C').Copy: Sheets('Contrôle ER').Select: Cells(Lfin, 'D').Select: Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

Wend
Cells(Lfin, 'E').Select
' Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = '=RC[-3]+RC[-2]-RC[-1]'

Lfin = Lfin + 1
Next
 

ChTi160

XLDnaute Barbatruc
Salut Tiltan
ne pourrais tu pas mettre un fichier exemple(Zip -50ko sans caractères spéciaux ,sans accent sans espace dans le titre)et bien sûr sans données confidentielles
car il n'est pas évident de comprendre au vue d'une macro
je vais quand même essayé car il faut tout reconstruire et ArFFFF
on n'a pas forcément que celà à faire (c'est le plus long souvent Lol)
 

ChTi160

XLDnaute Barbatruc
re
tu dis
En fait, j'ai essayé de déclarer les deux variables ainsi :

Dim date1 As Variant
date1 = Names( Dat1 )
Dim date2 As Variant
date2 = Names( Dat2 )
donc si j'ai bien compris Date1 prend la valeur de la cellule nommée Dat1 et Date2 prend la valeur de la cellule Nommée Dat2
pourquoi ne pas écrire Dim Date1 as date ,Date2 as date
et Date1= Range('A1').value par exemple
et Date2= Range('B1').value par exemple
dit moi tout

re
with Sheets ('ER').Cells(Ltab, 'B')
If .Cells (Ltab, 'B') = 'SOLDE IRIS' Then Ltab = Ltab + 1
If .Cells (Ltab, 'B') = 'date1' Then Ltab = Ltab + 1
If .Cells (Ltab, 'B') = 'date2' Then Cells (Ltab, 'C').Copy:
end With
je ne comprends rien sans Fichier ,mais j'essais de comprendre Lol
dans cet extrait as tu mis les guillemets pour l'exemple?
car si tu les laisse dans la macro ce sont les mot date1 et date2 qui sont comparés et non leur valeur
on ne sait jamais

Message édité par: Chti160, à: 15/06/2005 14:30

Message édité par: Chti160, à: 15/06/2005 14:32
 

Sylvain

XLDnaute Occasionnel
Bonjour,

pourquoi pas aller plus loin dans l'utilisation d'un nom interne à excel. Au lieu de lui donner une référence à une cellule, on peut saisir =75 au moment de la création du nom (menu insertion / nom / définir).

A ce moment on peut utiliser ce code ci : Names('toto').Value = 69

Et il n'y a plus besoin de variable :eek:
 

ChTi160

XLDnaute Barbatruc
re salut
bonjour sylvain
moi aussi j'ai fais un test
qui confirme que date2 = Names('dat2')renvoie une Adresse de cellule
alors que le date1 renvoie C'est Good si en D1 j'ai la même valeur quand B1 (soit une date)

Sub test()
Dim date1 As Date, date2 As Variant
date1 = Range('D1').Value
date2 = Names('dat2')
With Sheets('Feuil1')
If .Cells(1, 'B') = 'SOLDE IRIS' Then MsgBox 'coucou'
If .Cells(1, 'B') = date1 Then MsgBox 'C'est good'
If .Cells(2, 'B') = date2 Then Cells(1, 'C').Copy:
End With

End Sub
Sylvain merci pour l'astuce, c'est un peu comme pour les formules que l'on Nomme, mais j'y comprends rien Lol

Message édité par: Chti160, à: 15/06/2005 14:57
 
T

Tiltan

Guest
ChTi160 écrit:
re
pourquoi ne pas écrire Dim Date1 as date ,Date2 as date
et Date1= Range('A1').value par exemple
et Date2= Range('B1').value par exemple
dit moi tout

La réponse à ta question est toute simple : 'Je débute sur les macros' mais j'avais l'habitude de de nommer les cellules pour utiliser Sommeprod.

Je confirme que Date1 et date2 ne fonctionne pas dans la marcro

J'adresse le fichier Excel dès demain car pas le temps, ce jour.

If Sheets('ER').Cells(Ltab, 'B') = 'date1' Then Ltab = Ltab + 1
If Sheets('ER').Cells(Ltab, 'B') = 'date2' Then Cells

pour que cela fonctionne il fau remplacer 'date1' par 'SOLDE FINAL IRIS AU 31.05.2005' et 'date2' par 'SOLDE FINAL IRIS GTL0 AU 31.05.2005'
 

ChTi160

XLDnaute Barbatruc
re en te relisant je pense avoir compris
tu n'aurais alors besoin que d'une seule variable puisque seul la date est variable
il faut pour comparer mettre ton texte sous cette forme
If Sheets('ER').Cells(Ltab, 'B') = 'SOLDE FINAL IRIS AU ' & date1 Then Ltab = Ltab + 1
If Sheets('ER').Cells(Ltab, 'B') ='SOLDE FINAL IRIS GTL0 AU '& date1 Then Cells

tu obtiens donc
'SOLDE FINAL IRIS AU ' & date1 avec par exemple valeur de date1= 31.05.05
soit
'SOLDE FINAL IRIS AU 31.05.05
tu obtiens donc
='SOLDE FINAL IRIS GTL0 AU ' & date1
soit
='SOLDE FINAL IRIS GTL0 AU 31.05.05'
en espèrant avoir compris Lol :p :p

Message édité par: Chti160, à: 15/06/2005 19:06
ps un fichier demo [file name=Variable_Dur.zip size=6764]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Variable_Dur.zip[/file]

Message édité par: Chti160, à: 15/06/2005 19:22
 

Pièces jointes

  • Variable_Dur.zip
    6.6 KB · Affichages: 10

Discussions similaires

Réponses
3
Affichages
591

Statistiques des forums

Discussions
312 345
Messages
2 087 473
Membres
103 553
dernier inscrit
jhnm