Re: Ouvrir une page web et récupérer les données d'un tableau | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 07-03-2023 21h08
Bonsoir Icedarts, le Forum,
En modifiant une partie du code précèdent comme suit (en rouge), ça devrait suffire pour répondre à cette nouvelle demande : 'Complétude du tableau With Sheets("Données") For L = 1 To NbLignTab For C = 0 To NbColTab With .Cells(Lmax + L + 1, C + 1) .Value = TabDoc.Rows(L).Cells(C).innerText If C = NbColTab Then .Offset(0, 1).Value = vTabLiens(Lnk, 2) End If End With Next C Next L End With En pièce jointe, le code en action.
Bien cordialement, Didier_mDF
![]() Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
![]() |
![]() ![]() |
Re: VBA Graphique Bulle | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 04-03-2023 20h59
Bonsoir verdanto,
Sans doute le sujet n'est-il plus d'actualité...
Compte tenu de la complexité du code recopié ici (origine allemande ?) et sans fichier joint pour aider à éclaircir un peu le problème, je n'avais d'abord pas l'intention de répondre à ta demande à vrai dire...
Mais juste au cas où (et avec un peu de chance !), je dirai que la solution se trouve dans ce morceau de code :
' Anzahl Zeitperioden T AnzahlT = 2 'WorksheetFunction.CountIf(Sheets("SAISIE DES RISQUES").Range("F4:Z4"), "*SM*") activeCol = 4 + (AnzahlT * 2) Ici, la variable "activeCol" prend une valeur de 4 + (2 * 2) = 8 (ce qui correspond en théorie à la colonne H, 8ème colonne)
Je pense qu'en affectant une valeur de 12 (soit colonne L), la suite du code devrait pouvoir répondre à ton besoin. ATTENTION, cependant : une telle modification impliquera forcément d'autres répercutions ailleurs dans ton code !!!
Te souhaitant bonne chance, Bien cordialement,
Didier_mDF
![]() Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
![]() |
![]() ![]() |
Re: Ouvrir une page web et récupérer les données d'un tableau | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 04-03-2023 20h35
Bonsoir Icedarts, le Forum,
Tu trouveras en pièce-jointe sans doute une façon de faire :
DANS UN MODULE DE CODE STANDARD (ex : Module1) Option Explicit Sub RecupDatas() ' myDearFriend! - www.mdf-xlpages.com ' Mars 2023 ' Nécessite une référence à "Microsoft HTML Object Library" Dim vTabLiens As Variant Dim iDoc As New MSHTML.HTMLDocument Dim TabDoc As HTMLTable Dim Lnk As Long, NbLignTab As Long, Lmax As Long, L As Long Dim NbColTab As Byte, C As Byte 'Liste des liens vTabLiens = Sheets("Liens").Cells(1, 1).CurrentRegion.Value 'Pour chaque lien For Lnk = 1 To UBound(vTabLiens, 1) 'Récup table datas With CreateObject("MSXML2.XMLHTTP") .Open "GET", vTabLiens(Lnk, 1), False .send iDoc.body.innerHTML = .responseText End With Set TabDoc = iDoc.getElementById("tableSort") NbLignTab = TabDoc.Rows.Length - 1 NbColTab = TabDoc.Rows(0).Cells.Length - 1 'Complétude du tableau With Sheets("Données") For L = 1 To NbLignTab For C = 0 To NbColTab .Cells(Lmax + L + 1, C + 1).Value = TabDoc.Rows(L).Cells(C).innerText Next C Next L End With Lmax = Lmax + NbLignTab Next Lnk MsgBox "Récup terminée !" Set TabDoc = Nothing Set iDoc = Nothing End Sub Nb : tu n'as pas besoin de faire usage d'un webBrowser pour le fonctionnement de ce code.
En espérant t'avoir aidé.
Bien cordialement,
Didier_mDF
![]() Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
![]() |
![]() ![]() |
Re: Aide sur userform | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 13-02-2023 15h19
Bonjour tactic6, le Forum,
Je n'ai pas tout repris dans ton code (et je ne le ferai pas, hein ?!
Citation : tactic6 a écrit :
Concernant le lancement du USF par double-clic, ton code était correct (mais ton USF se nomme "Recherche_Pièces", aussi l'instruction "Pièces.Show" méritait aussi une modification du nom correspondant pour fonctionner)
Ensuite, je n'ai pas compris pourquoi ce choix de colonne H de la FEUIL1 pour la source de données de la ComboBox des Quantités... Voir mon interprétation de ce point dans le fichier.
Concernant la recopie des données dans la feuille SAISIE, tu y étais presque! Il ne te manquait que la ligne ci-dessous en rouge pour déposer les données au bon endroit : Private Sub BtnImporter_Click() Dim x$ Dim Lig As Long x = "SAISIE" With Sheets(x) Lig = .Cells(52, 2).End(xlUp).Row + 1 ' = 1ère ligne libre dans la facture .Cells(Lig, 2).Value = TextBox1.Value .Cells(Lig, 3).Value = TextBox2.Value .Cells(Lig, 11).Value = TextBox3.Value * 1 .Cells(Lig, 9).Value = TextBox4.Value * 1 .Cells(Lig, 8).Value = ComboQuantite.Value * 1 .Cells(Lig, 10).Value = (ComboQuantite.Value * 1) * (TextBox4.Value * 1) End With Unload Me End Sub
Citation : tactic6 a écrit :
Tu as 2 solutions pour ce faire :
Pour conclure, je te conseille très fortement de renommer les objets de tes formulaires (comme je l'ai fait pour certains ici) afin de clarifier un peu ce que tu fais... Par exemple, "BtnImporter", c'est quand même un peu plus clair que "CommandButton3" ou autre...
Je te laisse observer le code en pièce jointe, en espérant que ça t'aidera un peu.
Par ailleurs, tu peux aussi essayer de t'inspirer d'un autre projet similaire que j'avais déjà remanié un peu pour l'ami Antonio dans CE FIL DE DISCUSSIONS (voir le fichier joint à mon post en fin de discussion).
Je te souhaite bon courage pour la suite. Bien cordialement, Didier_mDF
![]() Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
![]() |
![]() ![]() |
Re: Supprimer les espaces d'une cellule | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 27-01-2023 20h48
Re,
Si le problème venait de la boucle mal placée, il n'y aurait aucune raison pour que l'erreur apparaisse une trentaine de lignes plus haut !
Je ne vais pas mettre en doute ta façon de me présenter les choses, mais es-tu vraiment sûr que la ligne surlignée en jaune dans ton image précédente est réellement la ligne mise en évidence automatiquement par VBA lorsque l'erreur survient ?
Perso, j'ai un doute... car ton ErrorHandler est normalement fait - justement - pour empêcher les erreurs d'interrompre le code. Et c'est plutôt un handicap dans ta situation, car ici, on souhaiterais plutôt voir où le code plante !
Tu trouveras ci-joint, ton classeur d'origine "DiffClasseur.xlsm" dans lequel j'ai recopié tout le nouveau code que tu viens de fournir plus haut (et pour moi, la boucle est au bon endroit). Pour simplifier, j'ai seulement désactivé toute la partie du code concernant le traitement XML qui n'a visiblement rien à voir avec le problème en cours d'analyse ici.
Je te laisse tester et voir... mais chez moi, ça fonctionne très bien. En traitant l'autre fichier que tu avais fourni "MatrixDiag.xlsm", je n'ai aucune erreur et le résultat me semble celui attendu.
Je te souhaite bon courage pour la suite. Bien cordialement,
Didier_mDF
![]() Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
![]() |
![]() ![]() |
Re: Supprimer les espaces d'une cellule | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 27-01-2023 18h17
Bonjour Razmo, le Forum,
En principe, lorsque qu'une erreur apparait, la ligne de code générant cette erreur bloquante est surlignée en jaune dans l'éditeur VBA. A quel endroit le code s'est-il arrêté et quelle est la ligne concernée ? Selon moi, l'erreur n'est pas liée aux lignes que tu as écrite ici...
Pour tenter d'éclaircir tout ça, je résume la situation :
Mais, selon moi, ces expressions inutiles ne sont pas à l'origine de ton message d'erreur... Pour moi, ce code doit fonctionner correctement et ton erreur est certainement ailleurs...
Bien cordialement, Didier_mDF
![]() Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
![]() |
![]() ![]() |
Re: Supprimer les espaces d'une cellule | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 26-01-2023 18h04
Bonjour Razmo, ,le Forum,
Encore une fois, tu y étais presque !
Tu as visiblement effectué des recherches et tester certaines solutions par toi-même, et moi j'apprécie tes efforts, ça donne envie de te donner un coup de main.
Ta réflexion est tout à fait bonne au final :
Quant à la définition de "MaPlage", je te propose ceci (en tenant compte du code présenté dans tes précédents fils de discussion) :
Set MaPlage = DIFF_WS.UsedRange.Columns(DIFF_DTC_H.Column)
For Each MaCellule In MaPlage.Cells
'Étape 5: supprimer les espaces
MaCellule.Value = Trim(MaCellule.Value)
Next MaCellule
Nb: j'ai supprimé ton test sur cellule vide IsEmpty() car il me semble inutile ici : la fonction Trim() tolère les chaines vides sans générer d'erreur.
Bien cordialement, Didier_mDF
![]() Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
![]() |
![]() ![]() |
Re: Enlever les notes d'une cellule et valeur ordre croissant | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 24-01-2023 19h14
Bonjour Razmo, le Forum,
Tout d'abord, afin que les visiteurs intéressés puissent comprendre, le présent sujet est la suite de cette précédente DISCUSSION.
Tu as plusieurs solutions pour régler cette situation et j'en vois deux particulièrement : - La première serait d'échanger ta ligne de code : MATRIX_DTC_H_Datas.Copy Destination:=DIFF_DTC_H.Offset(1, 0) Par les 2 suivantes : MATRIX_DTC_H_Datas.Copy DIFF_DTC_H.Offset(1, 0).PasteSpecial Paste:=xlPasteValues Ça permet de ne recopier QUE les valeurs de cellules.
- La deuxième serait de laisser ton code tel quel, et supprimer les commentaires après collage en ajoutant simplement la ligne suivante : DIFF_DTC_H.EntireColumn.ClearComments
Tu y étais presque ! Tu devrais pouvoir insérer ceci, en fin de procédure : With DIFF_WS.UsedRange.Offset(2, 0) .Sort Key1:=.Range("A1"), Order1:=xlAscending, Header:=xlNo, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal End With J'espère que ça pourra t'aider. Bien cordialement,
Edité par myDearFriend! le 24/01/2023 19:30:19
Didier_mDF
![]() Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
![]() |
![]() ![]() |
Re: Transfert de données | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 08-01-2023 12h54
Bonjour tactic6, le Forum,
On en apprend tous les jours... Et moi, je découvre aujourd'hui cette limitation VBA que je n'avais pour ma part jamais rencontré encore ! Donc, tout d'abord merci à toi tactic6 pour cette découverte, c'est toujours intéressant à savoir.
Du coup, une petite recherche dans la doc Microsoft et tu tomberas sur cet article :
Pour rappel, utiliser des caractères de continuité de ligne n'est pas une obligation, c'est tout simplement une façon plus élégante de présenter du code afin qu'il soit plus facile à lire et à comprendre. Tu devrais donc pouvoir prolonger tes lignes pour contourner cette limitation dans l'éditeur.
De mémoire (à vérifier) je crois que l'éditeur VBE est limité à 1024 caractères sur une même ligne.
Bien cordialement, Didier_mDF
![]() Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
![]() |
![]() ![]() |
Re: Choisir la destination Dble click | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 07-01-2023 12h40
Bonjour tactic6, le Forum,
En pièce jointe, une façon de faire (parmi d'autres) :
DANS LE MODULE DE CODE DE LA FEUILLE Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'recherche de la cellule dans la colonne A If Target.Column = 1 Then Cancel = True With UserForm1 'On passe la valeur directement en propriété Tag du userform .Tag = Target.Value .Show End With End If End Sub DANS LE MODULE DE CODE DU USERFORM
Option Explicit
Private Sub CommandButton1_Click()
CopierCodeClient "SAISIE"
End Sub
Private Sub CommandButton2_Click()
CopierCodeClient "PAGE2"
End Sub
Private Sub CopierCodeClient(shName As String)
With Sheets(shName)
'On récupère la valeur en propriété Tag du userform
.Range("C12").Value = Me.Tag
.Activate
End With
Unload Me
End Sub
Je me sers de la propriété Tag du Userform comme d'une mémoire fourre-tout ! Tu peux l'utiliser pour mémoriser dedans n'importe quelle chaîne de caractères (String). C'est très pratique et ça évite l'usage de variables publiques pour faire passer des valeurs d'un module private à un autre. Moi, j'en fais usage très souvent
Bien sûr, tu aurais pu aussi y stocker l'adresse de la cellule source, mais pour le coup, je pense que stocker directement sa valeur était plus simple et efficient.
Nb : en passant... les déclarations Dim des variables ça se fait plutôt en début de procédure, et non au milieu.
En espérant t'avoir aidé. Bien cordialement, Didier_mDF
![]() Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
![]() |
![]() ![]() |