VBA Calcul direct.

gopo

XLDnaute Junior
Bonjour,

Je vous demande de l'aide ( Encore :eek: ).

Voila mon programme en VBA, copie le .text d'une cellule et la colle dans mon classeur excel, puis en mon tableau de mon classeur de destination, j'y est mis dans une cellule une formule =(AM21*G9)/G5 ( AM21 est la cellule ou ce colle ma celulle copié grâve a mon programme ).

Est il possible d'effectuer directement le calcul sans faire l'étape de copié, collé, puis effectuer la formule grace a cette valeur, peut on directement faire le calcul grace a la valeur ciblé =(valeur_tableau_source*G9)/G5.

Si je ne suis pas claire, merci de me le dire, je m'expliquerai plus clairement enfin j'essairais !

Bonne fin d'après midi !
 

Pierrot93

XLDnaute Barbatruc
Re : VBA Calcul direct.

Bonsoir gopo

oui tu peux faire des calculs par vba, comme ceci par exemple :

te renvoie le résultat dans la variable x
Code:
Dim x
x = (valeur_tableau_source * Range("G9").Value) / Range("G5").Value

A noter noms des classeurs et feuilles à préciser si calcul en dehors de la feuille active et du classeur actif.

bonne soirée
@+
 

gopo

XLDnaute Junior
Re : VBA Calcul direct.

Re,

Ya une erreur d'execution " Incompatibilité de Type ", sur la ligne de code x = ( ... * .. ) / ..

Code:
Private Sub CommandButton13_Click()
Dim Variable1 As String
Dim Variable2 As String
Dim Variable3 As String
Dim Variable4 As String
Dim Variable5 As String
Dim Variable6 As String
Dim Variable7 As String
Dim Variable8 As String
Dim x As String
Dim i As Integer
Dim j As Integer
Dim h As Integer

        i = 9
        For i = 9 To 846 Step 27
          If Cells(i, 2) = "753220 - PARIS KELLER ACP" Then
                For j = 5 To 26 Step 1
                    
                       If Cells(i + 1, j) = "Janvier" Then
                               With ThisWorkbook.Sheets("Détail ACP")
                     
                                    Variable1 = .Cells(i + 8, j).Value
                                    Variable2 = .Cells(i + 12, j).Text
                                    Variable3 = .Cells(i + 11, j).Text
                                    Variable4 = .Cells(i + 3, j).Text
                                    Variable5 = .Cells(i + 14, j).Text
                                    Variable6 = .Cells(i + 15, j).Text
                                    Variable7 = .Cells(i + 5, j).Text
                                     Variable8 = .Cells(i + 6, j).Text
                                End With
                        Set Dest = Workbooks.Open(ActiveWorkbook.Path & "\TBM ACP.xls")
                         With Dest.Sheets("Paris Keller")
                              .Cells(9, 7).Value = Variable1
                              
                   x = (Variable2 * .Cells(9, 7).Value) / .Cells(5, 7).Value
                   .Cells(13, 7).Value = x
                              .Cells(30, 7).Value = Variable3
                              .Cells(40, 7).Value = Variable4
                              .Cells(42, 7).Value = Variable5
                              .Cells(43, 7).Value = Variable6
                              .Cells(45, 7).Value = Variable7
                              .Cells(47, 7).Value = Variable8
                         End With
                 Exit For
          End If
        Next
      Exit For
    End If
  Next
  
 
End Sub

même si je fait
Code:
x = (Variable2 * .Cells(9, 7).text) / .Cells(5, 7).text
                   .Cells(13, 7).Value = x
 

Pierrot93

XLDnaute Barbatruc
Re : VBA Calcul direct.

Bonjour Gopo

tu déclares tes variables en "string" donc du texte, tu ne peux faire de calculs avec ce type de variable, sauf à convertir la donnée. Utilises plutôt un type "integer", "double" ou "single" fonction des données. F1 sur le type de variable t'en dira plus.

bonne journée
@+
 

gopo

XLDnaute Junior
Re : VBA Calcul direct.

Re,

Incompatibilité de type avec Single, Double, Integer, seulement String marche.

Je copie un nombre.

ps : quand je met Integer en Type pour mes variables ca me met : dépassement des capacités.

Amicalement.
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : VBA Calcul direct.

Re

regarde ci-dessous, pour les plages de valeur acceptées en fonction des types de données :

cf aide vba
Integer 2 octets -32 768 à 32 767
Long
(entier long) 4 octets -2 147 483 648 à 2 147 483 647
Single
(à virgule flottante en simple précision) 4 octets -3,402823E38 à -1,401298E-45 pour les valeurs négatives ; 1,401298E-45 à 3,402823E38 pour les valeurs positives
Double
(à virgule flottante en double précision) 8 octets -1,79769313486231E308 à
-4,94065645841247E-324 pour les valeurs négatives ; 4,94065645841247E-324 à 1,79769313486232E308 pour les valeurs positives

sinon mets peut être un petit fichier en pièce jointe, plus facile pour t'aider.

@+
 

gopo

XLDnaute Junior
Re : VBA Calcul direct.

Re pierrot,

Ca ne veut pas marcher, je t'envoie 2 piece jointe avec une macro dans le classeur source.xls, ca ressemble à ce que je souhaiterai.
 

Pièces jointes

  • destination.xls
    17.5 KB · Affichages: 87
  • source.xls
    27 KB · Affichages: 73
  • destination.xls
    17.5 KB · Affichages: 83
  • source.xls
    27 KB · Affichages: 78
  • destination.xls
    17.5 KB · Affichages: 80
  • source.xls
    27 KB · Affichages: 81

Pierrot93

XLDnaute Barbatruc
Re : VBA Calcul direct.

Re

modifies ton code comme suit :

Code:
Private Sub CommandButton1_Click()
Dim Variable2 As Single, Dest As Workbook, x As Single
With ThisWorkbook.Sheets("Feuil1")
    Variable2 = .Cells(1, 1).Value
End With
Set Dest = Workbooks.Open(ActiveWorkbook.Path & "\destination.xls")
With Dest.Sheets("Feuil1")
    x = (Variable2 * .Cells(1, 2).Value) / .Cells(2, 2).Value
    .Cells(3, 2).Value = x
End With
End Sub

@+
 

Discussions similaires

Réponses
5
Affichages
674

Statistiques des forums

Discussions
312 757
Messages
2 091 774
Membres
105 069
dernier inscrit
nico63