Forums XLPages

Tous les messages (Eric)

« 1 ... 9 10 11 12 13 14 15 »
Re: modifier formule dans macro
Semi pro XLPages

Inscription: 12/06/2008
De Ile de France Sud

Messages: 143

Système d'exploitation:
PC
Version Excel utilisée:
2003 _ 2010
Posté le : 08-06-2012 11h25
 
Bonjour à tous
Bonjour jad73
Ce que j'ai proposé était à adapter. Ne connaissant pas la cellule destinataire, j'avais pris "D1" comme exemple (la boule de cristal n'a pas marché).
Tu avais mis : NB.SI($B$2:$F$41;A6), donc j'ai repris cela (il faut que je change de boule de cristal).
Quoiqu'il en soit voici l'adaptation :
En tête du module, et non dans la "macro4" :
Dim a As Integer
Dim b As Integer

et entre "End with" et "Range("A6:B54").copy
Range("B6") = Application.WorksheetFunction.CountIf(Range("B" & (2 + a) & ":F" & (51 + b)), Range("A6"))
a = a + 1
b = b + 1
Eric


Edité par Eric le 08/06/2012 19:19:08
Hors Ligne
Rapport   Haut 

Re: modifier formule dans macro
Semi pro XLPages

Inscription: 12/06/2008
De Ile de France Sud

Messages: 143

Système d'exploitation:
PC
Version Excel utilisée:
2003 _ 2010
Posté le : 07-06-2012 12h15
Bonjour à tous
Bonjour jad73

Si j'ai compris, je te propose ceci :

Option Explicit

Dim a As Integer
Dim b As Integer
Dim c As Integer

Sub modifie_fonction()

Range("D1") = Application.WorksheetFunction.CountIf(Range("b" & (2 + a) & ":f" & (41 + b)), Range("a" & (6 + c)))

a = a + 1
b = b + 1
c = c + 1

End Sub

Il te reste à l'adapter.
Au lieu d'une formule dans D1, tu as le résultat.

Eric
Hors Ligne
Rapport   Haut 

Graphique sur USF avec des cellules vides ou textes
Semi pro XLPages

Inscription: 12/06/2008
De Ile de France Sud

Messages: 143

Système d'exploitation:
PC
Version Excel utilisée:
2003 _ 2010
Posté le : 09-05-2012 11h31
 Bonjour à tous
J'essaie d'avoir un graphique dans l'USF, pour cela j'ai le code suivant :

Option Explicit

Private Sub CommandButton1_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()
    'Utilisez l'objet WCChart pour la bibliothèque OWC9.
    'Utilisez l'objet ChChart dans les bibliothèques OWC10(Office 2002) et OWC11(Office 2003).

    Dim a As Integer
    Dim B As Range

' 1ère ligne du graphique
    Dim C As Object
    Dim Cht
' 2ème ligne du graphique qui existe dans le projet, mais pas dans l'exemple
    Dim C2 As Object
    Dim Cht2
   
    Dim firstaddress
    Dim G As Object
    Dim i As Integer
    Dim ligne As Long
    Dim nblign As Integer
    Dim plage As Range
   
' 1ère ligne du graphique
    Dim S1 As Object
    Dim TabX() 'As String
    Dim TabY() 'As ??????
' 2ème ligne du graphique qui existe dans le projet
    Dim S2 As Object
    Dim Tab2X() 'As String
    Dim Tab2Y() 'As ??????
   
a = 0
ligne = 5

    Set plage = Range("E5:E65536")
    nblign = Application.WorksheetFunction.CountA(plage)

' 1ère ligne du graphique
ReDim Preserve TabX(nblign)
ReDim Preserve TabY(nblign)
' 2ème ligne du graphique
ReDim Preserve Tab2X(nblign)
ReDim Preserve Tab2Y(nblign)


With Worksheets("Feuil1").Range("E5:E65536")
' je fais un "find" car dans le projet, les données ne sont pas toutes les lignes
    Set B = .Find("*", LookIn:=xlValues, Lookat:=xlWhole)
    If Not B Is Nothing Then
        firstaddress = B.Address
        Do
            ligne = B.Row
                TabX(a) = Range("E" & ligne).Text
               
' *****************  le problème
' A la place de cette ligne
                TabY(a) = Range("H" & ligne)
'J'ai testé cette ligne
'If IsNumeric(Range("H" & ligne)) Then TabY(a) = Range("H" & ligne) Else TabY(a) = "#N/A"
'mais qui ne fonctionne pas.
' *****************
               
            a = a + 1
            Set B = .FindNext(B)
        Loop While Not B Is Nothing And B.Address <> firstaddress
    End If
End With

    Set C = ChartSpace1.Constants
    Set Cht = ChartSpace1.Charts.Add
   
    With Cht
        .Type = C.chChartTypeScatterLineMarkers
        .HasTitle = True
        .Title.Caption = "Mon graphique"
    End With
   
     Set S1 = Cht.SeriesCollection.Add
         With S1
              .Type = C.chChartTypeLine
              .SetData C.chDimCategories, C.chDataLiteral, TabX
              .SetData C.chDimValues, C.chDataLiteral, TabY
              .DataLabelsCollection.Add
         End With

End Sub
Sur la feuille, les données du graphique sont, samedi 21 est en E5 :
 en  colonne E :
samedi 21 avril 2012
dimanche 22 avril 2012
lundi 23 avril 2012
mardi 24 avril 2012
mercredi 25 avril 2012
jeudi 26 avril 2012
vendredi 27 avril 2012
samedi 28 avril 2012
dimanche 29 avril 2012
lundi 30 avril 2012
mardi 1 mai 2012
mercredi 2 mai 2012
jeudi 3 mai 2012

en colonne H :  
9
5
4
inj       mais pour le graph-exemple de la feuille j'ai saisi =#N/A
8
2
1
5
7
cellule vide      mais pour le graph-exemple de la feuille j'ai saisi =#N/A
cellule vide      mais pour le graph-exemple de la feuille j'ai saisi =#N/A
1
5
mon problème est que j'ai des cellules vides ou texte en colonne H. Le graphique ne cumulant que les données "Value" cela ne fait une courbe que sur les 10 cellules sur les 13.
Si on trace le graphique sur la feuille, les cellules vides, que je transforme en #N/A pour l'exemple, sont 'ignorées" (les 24/4, 30/4 et 1/5), cad que la courbe est tracée du 23/4 au 25/4 et du 29/4 au 2/5 (et ne prend pas en compte les "#N/A" (voir graphique_sur_feuille.jpg)), mais en axe "X" les dates correspondantes existent. 
En VBA, je pensais adapter les cellules en colonne H, qui sont en "texte" ou vides, comme les cellules #N/A, comme ceci :
If IsNumeric(Range("H" & ligne)) Then TabY(a) = Range("H" & ligne) Else TabY(a) = "#N/A"  (ou "Erreur 2042" ou faire référence à une cellule H1=#N/A)
mais qui ne fonctionne pas. 
J'ai l'impression d'avoir une incompatibilité de Type dans "TabY", la cause étant le #N/A ??????
Ce que j'aimerai obtenir en VBA sur l'USF, c'est un graph avec "ignorance" des cellules "vides", "texte".
Merci d'avance pour vos conseils.
Eric










Pièce jointe:
zip graphique_sur_feuille_1.zip   [ Taille: 34.82 Ko - Téléchargements: 170 ]
Hors Ligne
Rapport   Haut 

Re: Répartir des informations à partir d'un compteur
Semi pro XLPages

Inscription: 12/06/2008
De Ile de France Sud

Messages: 143

Système d'exploitation:
PC
Version Excel utilisée:
2003 _ 2010
Posté le : 30-07-2011 12h10
Bonjour à tous
Bonjour Titom

Une petite explication du code :

Sub copie_sur_Feuil2()
'déclaration des variables
Dim a As Integer  'ou long si a>32 767 (dans le cas présent plus de 98301 lignes)
Dim i As Integer  'ou long si + de 32 767 lignes
Dim derlign As Integer 'ou long si + de 32 767 lignes
Dim tablo() 'déclaration d'une variable tableau

derlign = Sheets("Feuil1").Range("a65536").End(xlUp).Row    'récupération de la derlign de la colonne "A"
ReDim tablo(derlign, 2) 'redimensionnement de "tablo" en bidimensionnel
For i = 1 To derlign Step 3 'boucle de lecture de la colonne "A" avec un pas de trois
    tablo(a, 0) = Cells(i, 1)   'affectation de la valeur de la cellule (i,1) à tablo(a, 0)
    tablo(a, 1) = Cells(i + 1, 1)   ' ..... i+1
    tablo(a, 2) = Cells(i + 2, 1)   ' ..... i+2
    a = a + 1   'on incrémente "a" de 1
Next i

Sheets("Feuil2").Range("a1:c" & derlign / 3) = tablo()  'copie de "tablo" sur la feuille 2
' derlign / 3 => dans ce cas derlign est un multiple de 3

End Sub

si tu veux +, dis nous

Bon WE à tous

Eric


 
Hors Ligne
Rapport   Haut 

Re: Répartir des informations à partir d'un compteur
Semi pro XLPages

Inscription: 12/06/2008
De Ile de France Sud

Messages: 143

Système d'exploitation:
PC
Version Excel utilisée:
2003 _ 2010
Posté le : 29-07-2011 20h01
Bonsoir à tous
Bonsoir  Titom1978 

Juste pour la partie "copie", essaie ceci :

Sub copie_sur_Feuil2()
Dim a As Integer  'ou long
Dim i As Integer  'ou long
Dim derlign As Integer 'ou long
Dim tablo()

derlign = Sheets("Feuil1").Range("a65536").End(xlUp).Row
ReDim tablo(derlign, 2)
For i = 1 To derlign Step 3
    tablo(a, 0) = Cells(i, 1)
    tablo(a, 1) = Cells(i + 1, 1)
    tablo(a, 2) = Cells(i + 2, 1)
    a = a + 1
Next i

Sheets("Feuil2").Range("a1:c" & derlign / 3) = tablo()  'dans ce cas derlign est un multiple de 3

End Sub


si j'ai compris

Dis nous

Eric








Hors Ligne
Rapport   Haut 

Re: Lancer un mp3 depuis Excel
Semi pro XLPages

Inscription: 12/06/2008
De Ile de France Sud

Messages: 143

Système d'exploitation:
PC
Version Excel utilisée:
2003 _ 2010
Posté le : 08-06-2010 11h27
Bonjour à tous

Peux tu essayer ceci :

Public Vocal As New SpVoice

Sub Parler(ByVal Phrase As String)
    Application.StatusBar = Phrase
    Vocal.Speak Phrase
End Sub

Sub lire()
Dim i As Integer
Dim mavar As Integer
  For i = 1 To 3
      mavar = Cells(5, i)
      Parler mavar
  Next
End Sub

Eric


 
Hors Ligne
Rapport   Haut 

Re: Find sur cellules avec un format personnalisé
Semi pro XLPages

Inscription: 12/06/2008
De Ile de France Sud

Messages: 143

Système d'exploitation:
PC
Version Excel utilisée:
2003 _ 2010
Posté le : 17-05-2010 10h41
Re (avec un peu de retard)

En conclusion, voici le code complet (de ma demande) avec la déclaration des variables :

Option Explicit

Sub cherche_max_dans_ligne_5()

Dim c As Range
Dim firstAddress As String
Dim i As Integer
Dim mavar As Integer    'dans ce cas
Dim monadresse As String

mavar = Application.Max(Sheets("Feuil1").Range("d5:iv5"))

With Worksheets("Feuil1").Range("d5:iv5")
    Set c = .Find(mavar, LookIn:=xlValues, Lookat:=xlPart)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
'********************** ce que je cherche
            monadresse = c.Address
            MsgBox monadresse
'**********************
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
End With

End Sub

pour ceux que cela intéresse. A adapter.

Bonne journée à tous

Eric




Hors Ligne
Rapport   Haut 

Re: Find sur cellules avec un format personnalisé
Semi pro XLPages

Inscription: 12/06/2008
De Ile de France Sud

Messages: 143

Système d'exploitation:
PC
Version Excel utilisée:
2003 _ 2010
Posté le : 13-05-2010 13h46
Re

Merci pour cette réponse ultra rapide, ainsi que pour l'astuce que je ne connaissais pas (sinon...)

Pour le "...Je me permets d'ajouter aussi qu'un petit effort du côté des déclarations de variable et l'utilisation de Option Explicit n'est jamais un luxe...   .... ", tu as raison,  mais ce que j'ai déposé était un extrait de mon code. Pour ma part le "Option Explicit" est systématique, et m'oblige donc à déclarer les variables, ce que je fais en tête de module et par ordre alphabétique.

Merci encore et bonne fin de journée

Eric

Hors Ligne
Rapport   Haut 

Re: Find sur cellules avec un format personnalisé
Semi pro XLPages

Inscription: 12/06/2008
De Ile de France Sud

Messages: 143

Système d'exploitation:
PC
Version Excel utilisée:
2003 _ 2010
Posté le : 13-05-2010 11h01
Bonjour à tous
Bonjour MdF
Il est vrai que ce n'était peut-être pas très évident .....
Je recherche l'adresse de la cellule de valeur max, et suivante, dans la ligne qui se compose de cellules avec un (des) format personnalisé.
Dans le code fournit "c" est "Nothing" donc "monadresse=c.address" n'est pas traité.
Pour obtenir le maximum, j'avais opté pour "Application.Large()" car je cherche, avec la boucle "For", le "max" puis le "max-1", puis .... alors que "Application.MAx()" donne que le "max"
J'espère avoir été plus clair
Merci d'avance
Eric





Pièce jointe:
xls find_cel_avec_format_perso.xls   [ Taille: 26.00 Ko - Téléchargements: 252 ]
Hors Ligne
Rapport   Haut 

Find sur cellules avec un format personnalisé
Semi pro XLPages

Inscription: 12/06/2008
De Ile de France Sud

Messages: 143

Système d'exploitation:
PC
Version Excel utilisée:
2003 _ 2010
Posté le : 13-05-2010 09h57
 Bonjour à tous
Dans une ligne, j'ai, dans des cellules avec des formats personnalisés : "nb : xx" ou "xx fois", xx étant le résultat d'une formule
J'essaie ceci :

Sub essai_cherche_max()
 
For i = 1 To 2
    mavar = Application.Large(Sheets("Feuil1").Range("d5:iv5"), i)
   
    With Worksheets("Feuil1").Range("d5:iv5")
        Set c = .Find(mavar, LookIn:=xlValues, Lookat:=xlWhole)
       
        If Not c Is Nothing Then
            firstAddress = c.Address
            Do
                  monadresse = c.Address '????????
        'le traitement
                Set c = .FindNext(c)
            Loop While Not c Is Nothing And c.Address <> firstAddress
        End If
    End With
Next
End Sub

mais cela ne fonctionne pas
Merci d'avance pour le coup de main
Eric


Hors Ligne
Rapport   Haut 

« 1 ... 9 10 11 12 13 14 15 »